asp.net-mvc-3 – 在MVC 3视图模型上使用Editable属性
我希望使用属性将视图模型属性标记为只读,以便视图字段只在渲染视图中读取.应用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()) 其他属性完全正常,包括自定义验证属性.您能否告诉我数据注释可编辑属性是否在此上下文中起作用,应该如上所述那样工作还是需要做其他事情?谢谢. 解决方法
EditableAttribute documentation声明:
不幸的是,这意味着使用此属性对MVC中的验证没有任何影响.这感觉不对,但是如果你想一想在MVC框架中实现它需要什么,这是有道理的.例如,在典型的“编辑”视图中,用户执行初始GET请求,其中填充模型(通常来自DB记录)并将其提供给要呈现给用户的视图.然后用户进行一些编辑,然后提交表单.提交表单会导致从POST参数构造Model的新实例.验证器很难确保该字段在两个对象实例中具有相同的值,因为其中一个实例(来自GET请求的第一个实例)已经被处理掉了. 好吧,如果属性没有功能,为什么甚至懒得使用它? 我最好的猜测是他们希望开发人员在他们的代码中使用它来显示意图.更实际的是,您还可以编写自己的自定义代码来检查此属性的存在… AttributeCollection attributes = TypeDescriptor.GetAttributes(MyProperty); if (attributes[typeof(EditableAttribute)].AllowEdit) { // editable } else { // read-only } 还要记住,这些DataAnnotation属性不仅适用于MVC应用程序,它们还可用于许多不同类型的应用程序.即使MVC没有对此属性做任何特殊处理,other frameworks have implemented functionality/validation for this attribute. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 使用facebook登录的asp .net 4.0会员资格
- 实现对Asp.NetMvc及Asp.NetCore的权限控制
- 在ASP.NET中,如何防止隐藏字段值的篡改
- Asp.net mvc 知多少(一)
- asp.net-mvc-4 – DataAnnotation的必需属性
- asp.net – 如何在Web应用程序中获取Client Machine的Mac地
- asp.net :( c#client-side)如何访问页面加载后创建的html元
- asp.net-mvc – 集合的验证摘要
- asp.net-core – Services.AddOptions()含糊不清
- 压力测试ASP.Net应用程序
- asp.net – Telerik RadGrid具有不同类型的编辑控
- asp.net-mvc – asp.net mvc授权使用角色
- asp.net core中AddTransient,AddScope和AddSing
- asp.net – HTML电子邮件中的嵌入图像无法在手机
- .net – 在Map中注入时,StructureMap会警告 – 为
- asp.net-mvc-3 – 如何从RazorViewEngine访问Req
- asp.net-mvc – 使用ASP.NET Identity 2.0 UserM
- 初学者-asp.net三层架构
- asp.net-mvc-3 – 安全地通过ASP.NET同步上下文执
- asp.net-mvc – asp.net mvc viewmodels.它们应包