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">...
为了自动绑定(bind)回 Model.Contact.Title - 有什么想法吗?
重要更新
这与我最初的想法略有不同......它实际上看起来像我传递的任何内容,因为 name 属性被简单地忽略......
new { name = "MYNAME" }
仍然显示 Contact_Title!
感谢任何帮助!
最佳答案
<%= Html.DropDownList(
"Contact.Title",
new SelectList(Model.Titles, "Key", "Value"))%>
这将呈现:
<select id="Contact_Title" name="Contact.Title">...
它仅替换 id 中的点,因为它在 xhtml 中无效。
关于asp.net-mvc - ASP.NET MVC 元素名称中的 2 个点替换为下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2379332/