Ich habe diese Codezeile:
%Vor% Ich habe eine Variable in meinem Datenwörterbuch namens Readonly. Wie mache ich die Menge schreibgeschützt, wenn ViewBag.Readonly
wahr ist, und nicht nur, wenn sie falsch ist?
Einfache Sache, aber die Kombination von Razor mit HTML (die alt ist) macht ansonsten einfache Dinge unmöglich.
Bearbeitungen:
Ich möchte keine if-Anweisung verwenden. Das ist ein letzter Ausweg, weil es gegen DRY verstößt, wo ich in der Vergangenheit schon oft genug verbrannt wurde, weil ich nicht verfolgt habe.
Die obige Zeile funktioniert insofern, als sie das Textfeld schreibgeschützt macht. Ich muss dies abhängig von meinem Ansichtszustand machen.
Lösung:
Ich habe folgendes benutzt. Es ist immer noch eine DRY-Verletzung, aber es reduziert es auf eine Zeile.
%Vor%Falls Sie mit dieser Logik viele Orte in Ihrer Sicht haben, denke ich, dass Sie die Bibliothek FluentDataAnnotations verwenden kann den Code sauber und klar halten.
Wenn Sie mit FluentValidator vertraut sind, ist es sehr ähnlich.
In Ihrem Fall wird die gesamte Logik von einer Ansicht zur Modellanmerkungs-Klasse verschoben. In werden Sie nur @Html.EditorFor(model => model.Quantity)
Es erlaubt sogar Modelleigenschaften unter Bedingungen zu verwenden
z.B.
this.When(model => !model.AllowEditPhone,
() => {
this.For(m => m.Phone).SetReadOnly(false);
});
Hier das NuGet-Paket , für das ASP.NET MVC 5 erforderlich ist. (Unterstützung für ASP.NET Core ist in Arbeit.)
JQUERY zum Lesen des SETUP_TYPE-Steuerwerts und zum Deaktivieren der Steuerelemente mit einem bestimmten CSS-Selektor.
%Vor%Dieses Steuerelement ist deaktiviert, wenn SETUP_TYPE 1 oder 2 ist.
%Vor%Dieses Steuerelement ist deaktiviert, wenn SETUP_TYPE 1 ist.
%Vor%Dieses Steuerelement ist deaktiviert, wenn SETUP_TYPE 2 ist.
%Vor%Tags und Links asp.net-mvc html5 asp.net-mvc-5