带有点的表单元素的MVC Controller参数?

cod*_*ike 12 asp.net-mvc post

如果你正在使用Html.TextBoxFor()类型方法,你最终可能会得到名称中带点的Form控件,如下所示:

<input type="text" name="Contact.FirstName" id="Contact_FirstName" />

如果您希望MVC将这些命名字段映射到控制器中的参数(而不是对象参数或其他参数),则必须使参数名称正确.怎么办点?

这不是:

[HttpPost]
public ActionResult FooAction(string firstName)
Run Code Online (Sandbox Code Playgroud)

不是这个:

[HttpPost]
public ActionResult FooAction(string contact_FirstName)
Run Code Online (Sandbox Code Playgroud)

似乎工作.

编辑:有一个合适的对象参数可以工作(例如,参见clicktricity的答案),但我正在寻找一种方法来使用命名值参数.

Ale*_*yev 17

我找到了另一种方法,一种黑客,因为我认为这是滥用BindAttribute,将firstName参数与Contact.FirstName输入元素相关联:

[HttpPost]
public ActionResult FooAction([Bind(Prefix="Contact.FirstName")]string firstName)
Run Code Online (Sandbox Code Playgroud)

这肯定适用于ASP.NET MVC 1.