Frage

Benutzen Vorschau 4 von ASP.NET MVC Code wie:

<%= Html.CheckBox( "myCheckBox", "Click Here", "True", false ) %>

gibt nur aus:

<input type="checkbox"  value="True"  name="myCheckBox"  />

Da ist ein name da für das Formular zurückschicken, aber nein id für Javascript oder Labels :-(

Ich hatte gehofft, dass ich es wie folgt ändern würde:

Html.CheckBox( "myCheckBox", "Click Here", 
               "True", false, new { id="myCheckBox" } )

würde funktionieren - aber stattdessen bekomme ich eine Ausnahme:

System.ArgumentException: An item with the same key has already been added.

Als gäbe es irgendwo in einer Sammlung bereits eine ID – ich bin ratlos!

Die vollständige Ausnahme für alle Interessierten folgt (hey – wäre es nicht schön, hier Dateien anzuhängen):

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
War es hilfreich?

Lösung

Versuche dies:

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

Für jedes Schlüsselwort können Sie einen Unterstrich vor dem Namen des Attributs verwenden.Anstelle von class verwenden Sie _class.Da „class“ ein Schlüsselwort in C# und auch der Name des Attributs in HTML ist.Nun ist „id“ kein Schlüsselwort in C#, aber vielleicht ist es in einer anderen .NET-Sprache, die sie unterstützen möchten.Soweit ich das beurteilen kann, handelt es sich nicht um ein Schlüsselwort in VB.NET, F# oder Ruby. Vielleicht ist es also ein Fehler, dass Sie dazu gezwungen werden, einen Unterstrich zu verwenden.

Andere Tipps

Anscheinend ist das ein Fehler.Da sie es zu potenziellen Rendering-Werten hinzufügen, haben sie einfach vergessen, es einzubeziehen.Ich würde empfehlen, einen Fehler in Codeplex zu erstellen, die Quelle herunterzuladen und sie an Ihre Bedürfnisse anzupassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top