web-dev-qa-db-ja.com

フィールドを「読み取り専用」としてデータ注釈でマークします

IDフィールドを読み取り専用にしようとしています。これはDBのIDフィールドであるため、ユーザーは設定しません。しかし彼らはそれを見たいと思っています。 DataFormに割り当てられた場合でも、その値を編集できるので、以下のように欠けています。

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

プロパティをReadOnly属性でマークします。

[ReadOnly(true)]
public decimal BodyMassIndex { get; private set; }

詳細については、以下のリンクをたどってください asp.net mvc 3のDataAnnotationsの動作は変更されましたか?

18
vijay

一般に、状況に基づいて2つのオプションがあります。

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

以下はMSDNからの説明です

System.ComponentModel.ReadOnlyAttribute

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

この属性がバインドされているプロパティが読み取り専用か読み取り/書き込みかを指定します。 ReadOnlyAttributeがtrueに設定されているメンバー、またはSetメソッドを持たないメンバーは変更できません。この属性を持たないメンバー、またはReadOnlyAttributeがfalseに設定されているメンバーは読み取り/書き込みであり、変更できます。デフォルトは「いいえ」です。

System.ComponentModel.DataAnnotations.EditableAttribute

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

データフィールドが編集可能かどうかを示します。

データフィールドにEditableAttribute属性が存在することは、ユーザーがフィールドの値を変更できるかどうかを示します。このクラスは、フィールドが編集可能であることを強制も保証もしません。基になるデータストアでは、この属性の存在に関係なく、フィールドを変更できる場合があります。

6
Tejasvi Hegde