asp.net mvc - Reagieren Sie mit MVC-Datenanmerkungen und unauffälliger Validierung

Translate

Wir versuchen derzeit, mit modernen Frontend-Frameworks zu experimentieren, z. B. auf ein MVC4-Projekt zu reagieren. Wir verwenden Datenanmerkungen in unseren Modellen und haben viele Formulare, die eine unauffällige Validierung auf der Benutzeroberfläche verwenden.

Die Hauptsache besteht darin, einen Weg zu finden, um den Inhalt mithilfe von Reagieren zu generieren und gleichzeitig Funktionen wie die unauffällige Validierung zu nutzen. So wie ich es verstehe, ist es wirklich nur ein Haufendata-valAttribute, die dynamisch generiert werden, wenn HTML-Helfer wie verwendet werdenTextAreaFor, ValidationMessageForDie Attribute erhalten Werte aus den Datenanmerkungen in den Modellklassen.

Ich habe verschiedene Dinge ausprobiert, darunter

 ReactDOM.render(
 @using (Html.BeginForm("xyz", "xyz", FormMethod.Post))
 {
      @Html.TextBoxFor(x => x.Email)

Dies führt dazu, dass das Eingabefeld aus irgendeinem Grund nicht bearbeitet werden kann.

Ich würde lieber so etwas machen

 ReactDOM.render(
      <form><input type="text" data-val="@Model.datannotations[1].val" /></form>

Ist das möglich? Wie bekommt man das?data-valWerte aus dem Modell trotzdem? Was ist der beste Weg, um dies zu erreichen?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

es sollte nicht möglich sein.

Dies sind zwei verschiedene Möglichkeiten, um die Benutzeroberfläche zu entwickeln. Der Rasiermesser-Weg besteht darin, den Markup-Code auf der Serverseite vorzuverarbeiten, um ihn zu füllen.

Wenn React in einem anderen Flow mithilfe der Lifecycle-Methoden reagiert, sollten Sie bereits die Datenanotationswerte für den Zugriff beim Rendern geladen haben.

Damit dies funktioniert, müssen Sie zuerst die Rasiermaschine ausführen, um das Markup zu füllen, und dann die Reaktionsmaschine verwenden. Ich empfehle diesen Ansatz nicht, da es zu schwierig ist, ihn zu entwickeln, und das Entwicklerteam diesen Fluss während der Entwicklung berücksichtigen muss

Beachten Sie dies

ReactDOM.render(<ComponentMustHaveJSX/>)
Quelle
Leave a Reply
You must be logged in to post a answer.
Über den Autor