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();
}
}
}
プロパティをReadOnly属性でマークします。
[ReadOnly(true)]
public decimal BodyMassIndex { get; private set; }
詳細については、以下のリンクをたどってください asp.net mvc 3のDataAnnotationsの動作は変更されましたか?
一般に、状況に基づいて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
データフィールドが編集可能かどうかを示します。
データフィールドにEditableAttribute属性が存在することは、ユーザーがフィールドの値を変更できるかどうかを示します。このクラスは、フィールドが編集可能であることを強制も保証もしません。基になるデータストアでは、この属性の存在に関係なく、フィールドを変更できる場合があります。