Das ReadOnly-Attribut funktioniert in ASP.NET MVC-Modellen nicht

Translate

Ich habe eine Immobilie als markiertschreibgeschütztin der Modellklasse wie folgt:

public class RegisterModel
{
    [Display(Name = "User name")]
    [ReadOnly(true)]
    public string UserName { get; set; }
    ...
}

und aus meiner Sicht:

@Html.EditorFor(m => m.UserName)

aber wenn ich die Anwendung starte, das Textfeldist nichtschreibgeschützt.

Ich weiß, dass ich HTML-Attribute in der Ansicht verwenden kann, um sie schreibgeschützt zu machen, aber ich würde es vorziehen, wenn dies in der Modellklasse selbst möglich ist.

Kann es erreicht werden?

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

Alle Antworten

Translate

[Update] Ich denke nicht, dass es ohne möglich istnew { @readonly = "readonly" }.ReadonlyEigenschaft gibt an, ob die Eigenschaft, an die dieses Attribut gebunden ist, schreibgeschützt oder schreibgeschützt ist.Details hier.

Aber du könntest es versuchenBenutzerdefinierte Helferoder versuchen Sie es mitEditablestattdessenReadonlyauf dem Modell und verwenden Sie die Metadateneigenschaft in Ihrer Ansicht.

[Editable(false)]

Ich denke, Sie haben bereits untersuchtFunktioniert ReadOnly (true) mit Html.EditorForModel?

auch ein schöner Artikelodetocode.com

Quelle
Translate

ReadOnlyDas Attribut blockiert den HMTL-Helfer nicht, um das Feld als aktivierte Eingabe anzuzeigen. Dies ist eine Information, die nur der MVC-Datenordner berücksichtigt.

Es bedeutet dasRegisterModelInstanz, die nach dem Absenden des Formulars durch einen Benutzer zurückgesendet wird, hat immernullWert darauf istUserNameEigenschaft, unabhängig von der Benutzereingabe im entsprechenden Feld des Formulars.

Quelle
Translate

Das ReadOnly-Attribut setzt die Eingabe nicht auf schreibgeschützt.

Versuche dies

Html.TextBoxFor(x => x.UserName, new { readonly = "readonly" })
Quelle
Translate

Wenn Sie einen SETTER verwenden, müssen Sie {get; privates Set; }. Dadurch kann der Client den Wert nicht ändern. Sie können auch einfach eine HTML 5-Eingabe verwenden und dort markieren.

Quelle
Leave a Reply
You must be logged in to post a answer.
Über den Autor