11 Stimmen

Das Setzen von HTML-Attributen, die Schlüsselwörter in Html.CheckBoxFor in ASP.NET MVC sind.

Ich verwende den HtmlHelper, um in meiner Ansicht ein Kontrollkästchen wie folgt zu erstellen:

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

Es wird jedoch ein Fehler gemeldet, da 'checked' ein reserviertes Schlüsselwort ist. Ich habe einige Leute gefunden, die sagen, dass Sie das 'reservierte Wort Präfix' verwenden müssen und einfach einen Unterstrich vor das Attribut setzen, wie hier:

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

Dies erzeugt keinen Fehler, aber im generierten HTML heißt das Attribut tatsächlich '_checked', was bedeutet, dass es nicht funktioniert (wenn ich Firebug verwende und den Unterstrich entferne, greift das Attribut dann).

Weiß jemand eine Lösung dafür, während immer noch CheckBoxFor verwendet wird?

Vielen Dank

17voto

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

Sie müssen es mit einem '@' versehen :-)

Aktualisierung

Gerade getestet mit dem folgenden und es funktioniert. Probieren Sie dies aus ...

Modell

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

Ansicht (ausgeschnitten auf nur die wichtigen Teile)

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

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

4voto

mikoku Punkte 41

Ich hatte das gleiche Problem: Das "checked"-Attribut wurde im HTML-Code immer weggelassen. Ich habe das Problem gelöst, indem ich "true" in das Modell übergeben habe. Der Auszug sieht so aus:

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

Da Sie das Kontrollkästchen mit dem Modell verbinden, zeigt das Kontrollkästchen immer den Wert an, den das Modell hat. Wenn der Wert in Ihrem Modell "false" ist, ist das Kontrollkästchen immer nicht aktiviert.

Vielleicht hilft das..

0voto

Andersson Melo Punkte 737

Verwenden Sie @checked

Tritt auch mit dem Attribut class (Schlüsselwort) auf, dann verwenden Sie @class

0voto

jcvandan Punkte 13804

Ich konnte keine Möglichkeit finden, wie ich HtmlHelper dazu bringen kann, das checked-Attribut zu registrieren, also habe ich einfach Html.CheckBox("SeatOnly", true) verwendet. Auf diese Weise wird die Eigenschaft in meinem ViewModel immer noch gesetzt und das Kontrollkästchen ist aktiviert.

Das ist in Ordnung, aber ich wäre immer noch daran interessiert, warum @checked nicht auf die gleiche Weise funktioniert wie @class.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X