使用数据注释标记"只读"字段

Ref*_*din 12 .net c# telerik data-annotations

我试图让ID字段只读.它是数据库中的标识字段,因此用户不会设置它.但他们希望看到它.如果分配给a 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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

vij*_*jay 18

使用ReadOnly属性标记属性.

[ReadOnly(true)]
public decimal BodyMassIndex { get; private set; }
Run Code Online (Sandbox Code Playgroud)

请按照以下链接获取更多 asp.net mvc 3中DataAnnotations的行为是否已更改?


Tej*_*gde 6

根据情况,您通常有两种选择.

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

以下是MSDN的说明

System.ComponentModel.ReadOnlyAttribute
Run Code Online (Sandbox Code Playgroud)

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

指定此属性绑定的属性是只读还是读/写.无法更改标记为ReadOnlyAttribute设置为true或没有Set方法的成员.没有此属性或标记为ReadOnlyAttribute设置为false的成员是可读/写的,可以更改它们.默认为否.

System.ComponentModel.DataAnnotations.EditableAttribute
Run Code Online (Sandbox Code Playgroud)

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

指示数据字段是否可编辑.

数据字段上存在EditableAttribute属性指示用户是否应该能够更改字段的值.此类既不强制也不保证字段可编辑.无论是否存在此属性,基础数据存储都可能允许更改字段.