ASP.NET MVC 2点替换为元素名称中的下划线

时间:2010-03-04 12:49:59

标签: asp.net-mvc binding

ASP.NET MVC 2点替换为元素名称中的下划线(即使ASP.NET MVC默认会在名称属性中放入点!)

当您在ASP.NET MVC中的表单上粘贴元素时,它通常会执行以下操作:

<%= Html.TextBoxFor(model => model.Contact.FirstName)%>

变为

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

这一切都很好。但是,如果您想这样做:

<%= Html.DropDownList(
    "Contact_Title",
    new SelectList(Model.Titles, "Key", "Value"))%>

你实际上最终得到了

<select id="Contact_Title" name="Contact_Title">...

请注意,您现在在名称属性中有一个下划线而不是一个点。

所以我想我会传递这个名字,包括一个点,就像这样:

<%= Html.DropDownList(
    "Contact_Title", 
    new SelectList(Model.Titles, "Key", "Value"),
    new { name = "Contact\\.Title" })%>

但它仍然呈现为:

<select id="Contact_Title" name="Contact_Title">...

我真的(真的)希望将其呈现为:

<select id="Contact_Title" name="Contact.Title">...

为了让它自动绑定回Model.Contact.Title - 任何想法?

重要更新

这与我最初的想法略有不同......实际上看起来就像我传递的那样,因为名字属性被忽略了......

new { name = "MYNAME" }

仍然导致Contact_Title!

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:6)

<%= Html.DropDownList(
    "Contact.Title",
    new SelectList(Model.Titles, "Key", "Value"))%>

这将呈现:

<select id="Contact_Title" name="Contact.Title">...

它只替换id中的点,因为它在xhtml中无效。