如何在 MVC 中使用 HtmlHelper 获取自定义 id 来呈现
Posted
技术标签:
【中文标题】如何在 MVC 中使用 HtmlHelper 获取自定义 id 来呈现【英文标题】:How do you get a custom id to render using HtmlHelper in MVC 【发布时间】:2010-09-05 16:59:18 【问题描述】:使用preview 4 的ASP.NET MVC 代码如下:
<%= html.CheckBox( "myCheckBox", "Click Here", "True", false ) %>
仅输出:
<input type="checkbox" value="True" name="myCheckBox" />
有一个name
用于回发表单,但没有id
用于javascript 或标签:-(
我希望将其更改为:
Html.CheckBox( "myCheckBox", "Click Here",
"True", false, new id="myCheckBox" )
会起作用 - 但我得到了一个例外:
System.ArgumentException: An item with the same key has already been added.
好像某个集合中的某个地方已经有一个 id - 我很难过!
任何感兴趣的人的完整例外如下(嘿-在这里附加文件不是很好吗):
System.ArgumentException:已添加具有相同键的项目。 在 System.ThrowHelper.ThrowArgumentException(ExceptionResource 资源) 在 System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) 在 System.Web.Routing.RouteValueDictionary.Add(字符串键,对象值) 在 System.Web.Mvc.TagBuilder2.CreateInputTag(HtmlInputType inputType,字符串名称,RouteValueDictionary 属性) 在 System.Web.Mvc.CheckBoxBuilder.CheckBox(字符串 htmlName,RouteValueDictionary htmlAttributes) 在 System.Web.Mvc.CheckBoxBuilder.CheckBox(字符串 htmlName,字符串文本,字符串值,布尔 isChecked,RouteValueDictionary htmlAttributes) 在 System.Web.Mvc.CheckBoxExtensions.CheckBox(HtmlHelper 助手,字符串 htmlName,字符串文本,字符串值,布尔 isChecked,对象 htmlAttributes) 在 ASP.views_account_termsandconditions_ascx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) 在 c:\dev\myProject\Views\Account\Edit.ascx:line 108
【问题讨论】:
【参考方案1】:试试这个:
<%= Html.CheckBox("myCheckbox", "Click here", "True", false, new _id ="test" )%>
对于任何关键字,您都可以在属性名称前使用下划线。您使用 _class 而不是类。由于 class 是 C# 中的关键字,也是 HTML 中属性的名称。现在,“id”不是 C# 中的关键字,但可能是他们想要支持的另一种 .NET 语言。据我所知,它不是 VB.NET、F# 或 Ruby 中的关键字,所以他们强迫你使用下划线可能是一个错误。
【讨论】:
这在文档中的哪里描述? 我不知道它是否在文档中。我找不到它。我想我只是在 Phil Haacks 的博客上读到它。另外,我认为前缀已从下划线更改为@,因此如果上述方法不起作用,请尝试“new @id="test"。【参考方案2】:显然这是一个错误。因为他们将其添加到潜在的渲染值中,所以他们只是忘记了包含它。我建议在 codeplex 上创建一个错误,然后下载源代码并根据需要进行修改。
【讨论】:
以上是关于如何在 MVC 中使用 HtmlHelper 获取自定义 id 来呈现的主要内容,如果未能解决你的问题,请参考以下文章
如何禁用 ASP.NET MVC 中 HtmlHelper 方法生成的单选按钮和复选框?
在 ASP.net core mvc 3.1 中的 HtmlHelper 扩展方法中使用 DataAnnotation 本地化器
无法将对象类型“System.Web.Mvc.HtmlHelper` 1 [System.Object]”转换为“System.Web.Mvc.HtmlHelper”