【发布时间】:2012-04-25 23:07:54
【问题描述】:
我希望使用属性将视图模型属性标记为只读,以便视图字段在渲染视图中是只读的。应用 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())
其他属性可以正常工作,包括自定义验证属性。你能告诉我数据注释可编辑属性是否在这种情况下工作,应该像上面应用的那样工作,还是需要做其他事情?谢谢。
【问题讨论】:
-
在创建视图中,我们希望用户能够为所有字段提供初始值,但一旦进入编辑视图,其中一些字段需要变为只读。