使用数据注释将字段标记为“只读”

17

我想要让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();
        }
    }
}
2个回答

26

8

根据情况,您一般有两个选项。

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

以下是来自 MSDN 的描述:

System.ComponentModel.ReadOnlyAttribute

该属性指定了其绑定的属性是只读还是读写。如果使用ReadOnlyAttribute并将其设置为true,或者该成员没有设置Set方法,则无法更改该成员。 如果未使用此属性或者使用ReadOnlyAttribute并将其设置为false,则该成员可以被读写,并且可以更改。 默认情况下为No。详细信息请参阅:https://msdn.microsoft.com/zh-cn/library/system.componentmodel.readonlyattribute(v=vs.110).aspx
System.ComponentModel.DataAnnotations.EditableAttribute

可编辑属性(EditableAttribute)指示数据字段是否可编辑。
在数据字段上存在 EditableAttribute 属性,表示用户是否应该能够更改该字段的值。但是,此类既不强制执行也不保证字段是可编辑的。底层数据存储可能允许更改字段,而与此属性的存在无关。 https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.editableattribute%28v=vs.110%29.aspx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接