我正在寻找使用属性将视图模型属性标记为只读,以便视图字段在渲染视图中只读。应用 System.ComponentModel.DataAnnotations.EditableAttribute 似乎是我需要的确切属性,但它似乎不起作用,即文本框字段仍然是可编辑的。我环顾四周,找不到答案,只有几个相关的问题。呈现视图时,下面应用的可编辑属性不起作用。
[Display(Name = "Last Name")]
[Editable(false, AllowInitialValue = true)]
public string LastName { get; set; }
我可以使用这样的视图辅助函数来实现只读行为,但我更喜欢在模型属性上使用属性。
@functions {
object getHtmlAttributes()
{
if (@ViewBag.Mode == "Edit")
{
return new {style = "width:100px;background:#ff6;", @readonly = "readonly"};
}
return new { style = "width:100px;" };
}
}
@Html.TextBoxFor(model => model.FirstName, getHtmlAttributes())
其他属性可以正常工作,包括自定义验证属性。你能告诉我数据注释可编辑属性是否在这种情况下工作,应该像上面应用的那样工作,还是需要做其他事情?谢谢。