Arbeitet ReadOnly (true) mit Html.EditorForModel?

7

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.

    
Atanas Korchev 18.08.2010, 08:07
quelle

3 Antworten

9

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 :

%Vor%

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.

    
Darin Dimitrov 18.08.2010, 10:45
quelle
11

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.

    
pwhe23 25.02.2011 02:52
quelle
2
%Vor%     
Dinesh 08.02.2012 01:47
quelle