如果您发布表单并且操作的查询参数和您有表单数据,那么ASP.NET / MVC中表单绑定的定义行为是什么?
例如:
<form action="my/action?foo=1" method="post">
<input type="hidden" name="bar" value="2">
</form>
如果提交了这样的表单,控制器应该同时获得foo
和bar
还是只有其中一个?
答案 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。你应该看到两个值都进来了。