MVC5: Kann @ Html.TextBoxFor (oder EditorFor) MaxLength aus der Datenannotation des Modells abrufen?

8

Es scheint so, als sollte es eine Möglichkeit geben, eine Model Annotation wie:

zu spezifizieren %Vor%

, so dass, wenn es in einem EditorFor oder TextBoxFor verwendet wird, wie:

%Vor%

oder

%Vor%

Die Generierung des HTML würde die maximale Länge des Eingabefeldes auf 2 setzen. Im Moment muss ich das tun:

%Vor%

Da dies gegen das DRY-Prinzip verstößt, frage ich mich, ob es bereits einen eingebauten Weg gibt, um diesen Fluss von den Datenannotationen zum Eingabefeld zu führen?

    
Mike Witt 08.03.2014, 15:51
quelle

4 Antworten

3

Es gibt eine Antwort hier , die beschreibt, wie Sie zusätzliche Metadatenwerte in der Ansicht erfassen können. In diesem Sinne können Sie so etwas tun ...

Beschriften Sie Ihr Modell:

%Vor%

Definieren Sie eine benutzerdefinierte Editorvorlage (String.cshtml):

%Vor%

Dann mach einfach:

%Vor%

Dies könnte einige Feinabstimmungen erfordern und könnte verbessert werden, indem ein benutzerdefiniertes Attribut definiert wird, anstatt nur AdditionalMetadata zu verwenden, aber es sollte Ihnen den Einstieg erleichtern.

Ich tendiere dazu, Aufrufe an die zusätzlichen Metadaten des Modells auch in einem benutzerdefinierten HTML-Helfer einzubinden.

    
Ant P 08.03.2014 16:03
quelle
2

Hier ist, was ich getan habe, um dies zu umgehen.

Erstellt eine js-Datei, die das Hinzufügen des erforderlichen Feldmarkers und des maxlength-Attributs ermöglicht:

%Vor%

Nachdem Sie es auf der Seite verlinkt haben, wo ich es brauche, rufen Sie es einfach so auf:

%Vor%
    
cooperonthego 08.07.2016 14:35
quelle
1

Dies wird derzeit nicht unterstützt. Sie können für diese Funktion abstimmen .

Ich denke, indem Sie ContainerType und PropertyName Eigenschaften von ModelMetadata verwenden, können Sie die PropertyInfo und von dieser Abfrage für das Attribut MaxLength alles in einer benutzerdefinierten Editorvorlage erhalten.

    
Max Toro 08.03.2014 16:09
quelle
0

Verwenden Sie

%Vor%

statt

%Vor%     
LawMan 12.02.2016 16:51
quelle

Tags und Links