asp.net-mvc – ASP.NET MVC:在视图上访问ViewModel属性
发布时间:2020-12-16 06:37:48 所属栏目:asp.Net 来源:网络整理
导读:有没有办法从视图中访问ViewModel属性上的任何属性(无论是数据注释属性,验证属性还是自定义属性)?我想在其属性具有[Required]属性的字段旁边添加一些必需指示符之一. 例如,如果我的ViewModel看起来像这样: public class MyViewModel{ [Required] public in
有没有办法从视图中访问ViewModel属性上的任何属性(无论是数据注释属性,验证属性还是自定义属性)?我想在其属性具有[Required]属性的字段旁边添加一些必需指示符之一.
例如,如果我的ViewModel看起来像这样: public class MyViewModel { [Required] public int MyRequiredField { get; set; } } 我想在EditorFor模板中做一些事情,如下所示: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<int?>" %> <div class="label-container"> <%: Html.Label("") %> <% if (PROPERTY_HAS_REQUIRED_ATTRIBUTE) { %> <span class="required">*</span> <% } %> </div> <div class="field-container"> <%: Html.TextBox("") %> <%: Html.ValidationMessage("") %> </div> 解决方法
您要查找的信息位于ViewData.ModelMetadata中. Brad Wilson的
blog post series on Templates应该解释一切,特别是
ModelMetadata的帖子.
对于其他ValidationAttributes,您可以通过 ModelMetadata.IsRequired将告诉你,如果一个复杂的类型(或值类型包裹在可空< T>)的由RequiredAttribute标签必需的,但它会给你误报对于不是空值类型(因为它们隐含地要求).您可以使用以下方法解决此问题: bool isReallyRequired = metadata.IsRequired && (!metadata.ModelType.IsValueType || metadata.IsNullableValueType); 注意:您需要使用!metadata.ModelType.IsValueType而不是model.IsComplexType,因为ModelMetadata.IsComplexType对于MVC返回false不认为是复杂类型,其中包括字符串. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – MultipartFormDataStreamProvider清理
- asp.net – 使用SqlMetal和Visual Studio时自动生成DataCon
- 向.NET电子邮件添加附件
- ASP.NET与jQuery弹出对话框:如何回发对话框关闭
- asp.net – 从内部线程更新网页
- asp.net-mvc – S#arp架构与直接IOC NHibernate MVC
- asp.net-mvc – 应用程序每15分钟编译一次
- 如何将标签对齐到表asp.net C#中行的顶部
- asp.net-mvc-2 – 动态生成的模型中的ASP.NET MVC 2数据注释
- asp.net-core – 如何使用TeamCity使用WebDeploy部署ASP.NE
推荐文章
站长推荐
热点阅读