asp.net-mvc - ASP.NET MVC 元素名称中的 2 个点替换为下划线

标签 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">...

为了自动绑定(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/

相关文章:

.net - ASP.NET MVC 本地化 : Get a resource instance

wpf - 命令参数 Datagrid SelectedItems 为空

IIS 7.0 多域站点绑定(bind)

c# - 根据其在 Silverlight 中的内容在 Grid 中设置 Grid RowDefinition 高度

java - 从不同于 java 的编程语言访问 reSTLet

javascript - 将 AJAX 数据传递并检索到 Controller

javascript - 如何发送带有动态 html 内容的电子邮件?

asp.net-mvc - 请求验证-ASP.NET MVC 2

silverlight - 在 Silverlight 中绑定(bind) ExpandoObject

asp.net-mvc - 为什么是 Model View Controller 而不是适配器 View Controller ? "M"或模型不清晰