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!
任何帮助表示赞赏!
答案 0 :(得分:6)
<%= Html.DropDownList(
"Contact.Title",
new SelectList(Model.Titles, "Key", "Value"))%>
这将呈现:
<select id="Contact_Title" name="Contact.Title">...
它只替换id中的点,因为它在xhtml中无效。