2009-05-18 52 views

回答

62

马特应该工作正常。如果你还在传递FormMethod.Post,不过,你需要做的是这样的:

Html.BeginForm("action","controller", new { Id = 12345 }, FormMethod.Post); 

逆转的第三和第四个参数将导致Id被视为一个属性,而不是路由值。

10

Html.BeginForm("action", "controller", new {Id = 12345})

+1

不起作用,它向表单标签添加了一个属性。 – mrblah 2009-05-18 15:40:50

+4

检查参数名称routeValues - 确保您使用的不是htmlAttributes。 – 2009-05-18 15:44:02

7
Html.BeginForm("action", "controller", new { id = ViewBag.FileID }, 
FormMethod.Post, new { id = "feedbackform" }) 

至于查询字符串,我不知道该怎么做。当然,查询是一个get,并破坏FormMethod.Post的整个目的。我的意思是,如果你想查询字符串数据,你可以使用FormMethod.Get,这可能是你正在寻找的。

此外,您可以避免html.beginform并使用表单标签手动执行querystring,get + post。

第三,如果你使用的是形式,你可以做一个隐藏字段:

[input type=hidden name="type" value="golden"] 

然后,当提交按钮被按下的值被正确地传递一个表单变量。