6

使用ASP.NET MVC 代码的预览 4,例如:

<%= 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
4

2 回答 2

5

试试这个:

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

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

于 2008-08-11T22:26:29.177 回答
0

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

于 2008-08-11T20:12:48.963 回答