Betrachten Sie das folgende Setup:
Modell:
%Vor%Anzeigen:
%Vor%Controller:
%Vor%Daraus ergibt sich folgendes:
Ich hatte erwartet, dass die Eigenschaft ProductID
nicht über das Attribut ReadOnly(true)
bearbeitet werden kann. Wird das unterstützt? Wenn nicht, gibt es eine Möglichkeit, ASP.NET MVC anzudeuten, dass einige Eigenschaften meines Modells schreibgeschützt sind? Ich möchte nicht nur ProductID
über [ScaffoldColumn(false)]
ausblenden.
Die Attribute ReadOnly
und Required
werden vom Metadatenanbieter verbraucht, aber nicht verwendet. Wenn Sie die Eingabe mit EditorForModel
loswerden möchten, benötigen Sie eine benutzerdefinierte Vorlage oder [ScaffoldColumn(false)]
.
Für benutzerdefinierte Vorlage ~/Views/Home/EditorTemplates/Product.ascx
:
Beachten Sie auch, dass der Standardmodellbinder einen Wert nicht in eine Eigenschaft mit [ReadOnly(false)]
kopiert. Dieses Attribut hat keinen Einfluss auf die Benutzeroberfläche, die von den Standardvorlagen gerendert wird.
Ich habe dieses Problem gelöst, indem ich ein UIHintAttribute zur Eigenschaft meiner Klasse " ReadOnly " hinzugefügt habe.
%Vor%Dann habe ich einfach eine ~ \ Views \ Shared \ EditorTemplates \ ReadOnly.ascx -Datei zu meinem Projekt hinzugefügt:
%Vor%Eine wirklich einfache Möglichkeit, um benutzerdefinierte Vorlagen hinzuzufügen, können Sie Formatierung oder was auch immer enthalten.
Tags und Links asp.net-mvc asp.net-mvc-2 readonlyattribute