使用查询字符串和表单参数对POST进行模型绑定

时间:2012-05-04 19:18:21

标签: asp.net-mvc-3

如果您发布表单并且操作的查询参数您有表单数据,那么ASP.NET / MVC中表单绑定的定义行为是什么?

例如:

<form action="my/action?foo=1" method="post">
     <input type="hidden" name="bar" value="2">
</form>

如果提交了这样的表单,控制器应该同时获得foobar还是只有其中一个?

3 个答案:

答案 0 :(得分:8)

控制器将获得两个值。默认模型绑定器将尝试从URI(查询字符串或路由参数)或正文(以及开箱即用的表单数据)中查找参数的匹配项。

答案 1 :(得分:2)

注意,您可以看到Html.BeginForm帮助器支持此功能,您可以通过routeValues执行此操作:

@Html.BeginForm("ActionName", "ControllerName", new { foo = "1" })

它实际上生成了与表单标记相同的html,但是想发布那些发现此问题的人,并希望知道如何使用BeginForm帮助程序传递不属于表单的其他值。

答案 2 :(得分:0)

我认为它应该能够兼得。在这种情况下,我将创建一个ViewModel,它包含两个字符串或int属性,一个名为'foo',另一个名为'bar',让你的ActionResult接受ViewModel。你应该看到两个值都进来了。