使用 预览4ASP.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: An item with the same key has already been added. 
   at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at System.Web.Routing.RouteValueDictionary.Add(String key, Object value)
   at System.Web.Mvc.TagBuilder2.CreateInputTag(HtmlInputType inputType, String name, RouteValueDictionary attributes)
   at System.Web.Mvc.CheckBoxBuilder.CheckBox(String htmlName, RouteValueDictionary htmlAttributes)
   at System.Web.Mvc.CheckBoxBuilder.CheckBox(String htmlName, String text, String value, Boolean isChecked, RouteValueDictionary htmlAttributes)
   at System.Web.Mvc.CheckBoxExtensions.CheckBox(HtmlHelper helper, String htmlName, String text, String value, Boolean isChecked, Object htmlAttributes)
   at ASP.views_account_termsandconditions_ascx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\dev\myProject\Views\Account\Edit.ascx:line 108
有帮助吗?

解决方案

尝试这个:

<%= Html.CheckBox("myCheckbox", "Click here", "True", false, new {_id ="test" })%>

对于任何关键字,您可以在属性名称前使用下划线。您使用 _class 而不是类。因为class是C#中的关键字,也是HTML中属性的名称。现在,“id”不是 C# 中的关键字,但也许是他们想要支持的另一种 .NET 语言中的关键字。据我所知,它不是 VB.NET、F# 或 Ruby 中的关键字,因此它们强制您使用下划线可能是一个错误。

其他提示

显然这是一个错误。因为他们将其添加到潜在的渲染值中,所以他们只是忘记将其包含在内。我建议在 codeplex 上创建一个错误,然后下载源代码并根据您的需要进行修改。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top