Wie mache ich EditorFor bedingt schreibgeschützt?

8

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%     
Jordan 19.03.2015, 19:24
quelle

5 Antworten

16

BEARBEITEN: MVC 5

Controller

%Vor%

Anzeigen

%Vor%     
Anjyr 19.03.2015, 23:04
quelle
3

Es ist sehr einfach. Mach es so.

%Vor%     
ataravati 19.03.2015 19:27
quelle
1

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)

haben

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.)

    
Albert 29.06.2017 15:52
quelle
0

Durch Schreiben einer Hilfsmethode kann der DRY-Principal respektiert werden.

%Vor%

dann in Ihrer Sicht:

Fügen Sie eine bedingte Anweisung hinzu, um readonly zu bestimmen z.B.

%Vor%

Sie können dann alle anderen gewünschten Überschreibungen hinzufügen.

    
Justin 17.10.2016 20:56
quelle
0

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%     
Matt 21.02.2018 17:38
quelle