2013-05-09 14 views
10

Próbuję odczytać tylko pole ID. Jest to pole Identity w DB, więc użytkownik nie będzie go ustawiał. Jednak chcieliby to zobaczyć. To, czego mi brakuje, jak poniżej, po przypisaniu do DataForm nadal pozwala na edycję tej wartości.Oznaczyć pole "Tylko do odczytu" za pomocą Adnotacji danych

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(); 
     } 
    } 
} 

Odpowiedz

5

Masz dwie opcje w ogóle w oparciu o sytuacji.

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

Poniżej znajdują się opisy z MSDN

System.ComponentModel.ReadOnlyAttribute 

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

Określa, czy obiekt ten atrybut ma obowiązek jest tylko do odczytu lub odczytu/zapisu. Elementy oznaczone znacznikiem ReadOnlyAttribute na wartość true lub bez metody Set nie mogą zostać zmienione. Członkowie, którzy nie mają tego atrybutu lub którzy są oznaczeni zbiorem ReadOnlyAttribute na wartość false, są czytani i zapisywani, i mogą zostać zmienione. Domyślnym jest nr

System.ComponentModel.DataAnnotations.EditableAttribute 

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

Wskazuje, czy dane pole jest edytowalne.

Obecność atrybutu EditableAttribute w polu danych wskazuje, czy użytkownik powinien mieć możliwość zmiany wartości pola. Ta klasa nie wymusza ani nie gwarantuje, że pole można edytować. Bazowy magazyn danych może zezwolić na zmianę pola bez względu na obecność tego atrybutu.

Powiązane problemy