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

Posted

技术标签:

【中文标题】使用数据注释将字段标记为“只读”【英文标题】:Mark a field "Read Only" with Data Annotations 【发布时间】:2013-05-03 12:44:31 【问题描述】:

我正在尝试将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();
        
    

【问题讨论】:

【参考方案1】:

使用 ReadOnly 属性标记属性。

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

点击以下链接了解更多 Has the behavior for DataAnnotations in asp.net mvc 3 changed?

【讨论】:

【参考方案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 属性表明用户是否应该能够更改字段的值。 此类既不强制也不保证字段是可编辑的。无论此属性是否存在,底层数据存储都可能允许更改字段。

【讨论】:

以上是关于使用数据注释将字段标记为“只读”的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中将字段标记为“只读”有啥好处?

Django:未提交表单中的只读字段

当首先使用带有数据注释的 MVC 代码时,如何在显示名称中包含 html 标记?

将 Jersey/Jackson 配置为不使用 @XmlElement 字段注释进行 JSON 字段命名

Java覆盖注释的默认值

如果我对对象的 3D 框进行了注释,如何标记点云?