Ich habe eine ASP.Net MVC 3-Webanwendung und füge ein Kontrollkästchen zu einer Ansichtsseite hinzu, indem ich die HtmlHelper-Klasse wie folgt verwende ...
@Html.CheckBox("CheckBox1", true, new { @class = "Class1" })
Ich möchte das deaktivierte Attribut basierend auf einer Ansichtsstatus-Eigenschaft bedingt hinzufügen. Grundsätzlich wäre folgendes ideal ...
@Html.CheckBox("CheckBox1", true, new { @class = "Class1", @disabled = Model.ReadOnly })
Leider funktioniert dies aufgrund der Art des deaktivierten Attributs nicht, da alle dem deaktivierten Attribut zugewiesenen Werte (sogar "false") als wahr übersetzt werden.
Ich habe bereits über einige Lösungen nachgedacht, um dieses Problem zu umgehen. Die Frage ist also nicht, wie ich das tun kann. Aber gibt es einen einfachen Weg wie die oben beschriebene gewünschte Methode? oder muss ich auf eines der folgenden zurückgreifen? ..
Was ich weiß, könnte ich tun ...
Erstellen Sie eine if / else-Anweisung und schreiben Sie in verschiedene
Html.CheckBox
Zeilen (nicht gut für die Lesbarkeit - und möglich mit einer Markup-Warnung - nicht sicher).Überspringen Sie die HtmlHelper-Klasse und schreiben Sie das Tag von Hand, um bessere bedingte Attribute zu ermöglichen (hält den Code kürzer, fügt aber Inkonsistenz hinzu)
Erstellen Sie einen benutzerdefinierten Helfer, der einen "deaktivierten" Parameter verwendet (die sauberste Lösung, erfordert jedoch unerwünschte zusätzliche Methoden - wahrscheinlich die bisher beste Option).