2013-05-09 5 views
10

Ich versuche, das ID Feld nur lesen zu machen. Es ist ein Identity-Feld in der DB, so dass der Benutzer es nicht einstellen wird. Aber sie würden es gerne sehen. Was fehlt mir, wie unten, wenn zugewiesen, um eine DataForm immer noch erlaubt diesen Wert bearbeitet werden.Markiere ein Feld "Read Only" mit Daten Annotationen

public class StatusChoice : BindableBase 
{ 
    private int id; 

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Editable(false,AllowInitialValue = false)] 
    public int ID 
    { 
     get { return id; } 
     set 
     { 
      id = value; 
      OnPropertyChanged(); 
     } 
    } 
} 

Antwort

5

Sie haben zwei Möglichkeiten in der Regel auf Basis von Situation.

[Editable(false)] or [ReadOnly(true)]

Im Folgenden sind Beschreibungen von MSDN

System.ComponentModel.ReadOnlyAttribute 

https://msdn.microsoft.com/en-us/library/system.componentmodel.readonlyattribute%28v=vs.110%29.aspx

Gibt an, ob die Eigenschaft dieses Attribut gebunden ist schreibgeschützt ist oder Lese-/Schreibzugriff. Mitglieder, die mit dem ReadOnlyAttribute-Set auf true oder mit einer Set-Methode markiert sind, können nicht geändert werden. Mitglieder, die dieses Attribut nicht besitzen oder mit dem ReadOnlyAttribute auf false gesetzt sind, sind Lese-/Schreibzugriffe, und sie können geändert werden. Die Standardeinstellung ist Nein

System.ComponentModel.DataAnnotations.EditableAttribute 

https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.editableattribute%28v=vs.110%29.aspx

Gibt an, ob ein Datenfeld bearbeitet werden kann.

Das Vorhandensein des EditableAttribute-Attributs in einem Datenfeld gibt an, ob der Benutzer den Feldwert ändern kann. Diese Klasse erzwingt und garantiert nicht, dass ein Feld bearbeitet werden kann. Der zugrunde liegende Datenspeicher kann möglicherweise zulassen, dass das Feld unabhängig vom Vorhandensein dieses Attributs geändert wird.