2010-04-22 9 views
11

Ich bin mit dem Htmlhelper eine Checkbox in meiner Ansicht zu erstellen, wie so:Rahmen HTML-Attribut, das Schlüsselwort in Html.CheckBoxFor in ASP.NET MVC reserviert

<%= Html.CheckBoxFor(model => model.SeatOnly, new { checked = "checked" })%>

jedoch ein Fehler ausgelöst wird wie überprüft ist ein reserviertes Schlüsselwort. Ich habe ein paar Leute gefunden zu sagen, dass Sie den ‚reservierten Wort Vorsilbe‘ verwenden müssen und einfach wie eine uderscore vor dem Attribut setzen so:

<%= Html.CheckBoxFor(model => model.SeatOnly, new { _checked = "checked" })%>

Dieses keinen Fehler erzeugen, sondern in die erzeugte html das Attribut ist tatsächlich '_checked' was bedeutet, dass es nicht funktioniert (wenn ich Firebug benutze und den Unterstrich entferne, wird das Attribut dann wirksam).

Kennt jemand einen Weg um dies zu tun, während immer noch CheckBoxFor?

Dank

+0

+1 Gilt auch für den Versuch, das 'class' html-Attribut zu setzen. – AaronLS

Antwort

19
<%= Html.CheckBoxFor(model => model.SeatOnly, new { @checked = "checked" })%> 

Sie müssen es das Präfix mit einem '@' :-)

aktualisieren

einfach mit dem folgenden und Werke getestet. Versuchen Sie, diese ...

Modell

public class MyModel 
{ 
    public bool SomeBooleanValue { get; set; } 
    public string Title { get; set; } 
} 

Ansicht (snipped nur auf die wichtigen Bits)

<%= Html.TextBoxFor(x => x.Title) %> 

<%= Html.CheckBoxFor(x => x.SomeBooleanValue, new { @checked = "checked" }) %> 
+1

Danke für die schnelle Antwort, ich habe versucht, mit @ vorzufixieren, aber das scheint auch nicht zu funktionieren, es gibt einfach kein "checked" Attribut im generierten HTML! jcvandan

+0

Mit meiner Antwort aktualisiert, erhalte ich die folgende Html ausgegeben ...> WestDiscGolf

+0

Das ist genau so, wie ich es versucht habe, aber aus irgendeinem Grund gibt es immer das checked-Attribut aus dem HTML aus (aber keine anderen Attribute, zB Klasse). Ich bin wirklich ratlos, also habe ich beschlossen, CheckBox anstelle von CheckBoxFor zu verwenden. – jcvandan

0

Verwenden @checked

tritt auch mit dem Attribut class (reserviertes Wort), verwenden sie @class

+0

arbeitet mit @class, aber beim Versuch, @checked zu verwenden, fügt es einfach nichts zum HTML-Markup hinzu! – jcvandan

+0

Haben Sie versucht, überprüft? (mit 'c' groß geschrieben) –

+0

Yeah versuchte das auch, das selbe Problem wie mit @checked. Dies ist sicherlich eine seltsame ... – jcvandan

0

Ich konnte keinen Weg finden, den HtmlHelper das überprüfte Attribut zu registrieren, also benutzte ich einfach Html.CheckBox("SeatOnly", true) stattdessen. Auf diese Weise wird die Eigenschaft in meinem Ansichtsmodell noch festgelegt und das Kontrollkästchen ist aktiviert.

Das ist in Ordnung, aber ich wäre immer noch interessiert zu wissen, warum @checked nicht in der gleichen Weise wie @klasse funktioniert.

4

Ich hatte das gleiche Problem: das "checked" -Attribut wurde immer im HTML-Code weggelassen. Ich löste das Problem, indem ich "wahr" in das Modell übertrug. Schnipsel sieht wie folgt aus:

MyModel model = new MyModel(); 
model.SomeBooleanValue = true; 

Wie Sie die Checkbox mit dem Modell verbinden Sie das Kontrollkästchen zeigt immer den Wert hat das Modell. Wenn der Wert in Ihrem Modell "falsch" ist, wird das Kontrollkästchen immer deaktiviert.

Vielleicht hilft dies ..