Utilizând previzualizare 4 a ASP.NET MVC Cod ca:
<%= Html.CheckBox( "myCheckBox", "Click Here", "True", false ) %>
ieșiri numai:
Există un name
pentru postarea înapoi a formularului, dar nu id
pentru javascript sau etichete :-(
Speram să-i schimbăm:
Html.CheckBox( "myCheckBox", "Click Here",
"True", false, new { id="myCheckBox" } )
ar funcționa - dar, în schimb, am o excepție:
System.ArgumentException: An item with the same key has already been added.
Ca și cum ar fi existat deja un id undeva într-o colecție undeva - m-am lovit!
Excepția totală pentru oricine interesat urmează (hei - nu ar fi frumos să atașați fișiere aici):
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
Se pare că acesta este un bug. Deoarece îl adaugă la valorile potențiale de randare, au uitat să o includă. Aș recomanda crearea unui bug pe codeplex și descărcați sursa și modificați-o pentru nevoile dvs.
Incearca asta:
<%= Html.CheckBox("myCheckbox", "Click here", "True", false, new {_id ="test" })%>
Pentru orice cuvânt cheie, puteți utiliza un subliniere înainte de numele atributului. În loc de clasă, utilizați _class. Deoarece clasa este un cuvânt cheie în C #, precum și numele atributului în HTML. Acum, "id" nu este un cuvânt cheie în C #, dar poate că este într-o altă limbă .NET pe care doresc să o susțină. Din câte vă pot spune, nu este un cuvânt cheie în VB.NET, F # sau Ruby, deci poate că este o greșeală pe care o obligă să folosiți un subliniere cu ea.