asp.net-mvc-3 – 如何从ModelMetadata检索GroupName数据注释
发布时间:2020-12-16 07:10:20 所属栏目:asp.Net 来源:网络整理
导读:System.ComponentModel.DataAnnotations中的DisplayAttribute具有GroupName属性,该属性允许您在UI控件(例如 WPF / WinForms中的属性网格)中将字段逻辑分组在一起. 我试图在ASP.NET MVC3应用程序中访问此元数据,主要是为了创建属性网格.如果我的模型看起来像
System.ComponentModel.DataAnnotations中的DisplayAttribute具有GroupName属性,该属性允许您在UI控件(例如
WPF / WinForms中的属性网格)中将字段逻辑分组在一起.
我试图在ASP.NET MVC3应用程序中访问此元数据,主要是为了创建属性网格.如果我的模型看起来像这样: public class Customer { [ReadOnly] public int Id { get;set; } [Display(Name = "Name",Description = "Customer's name",GroupName = "Basic")] [Required(ErrorMessage = "Please enter the customer's name")] [StringLength(255)] public string Name { get;set; } [Display(Name = "Email",Description = "Customer's primary email address",GroupName = "Basic")] [Required] [StringLength(255)] [DataType(DataType.Email)] public string EmailAddress { get;set; } [Display(Name = "Last Order",Description = "The date when the customer last placed an order",GroupName = "Status")] public DateTime LastOrderPlaced { get;set; } [Display(Name = "Locked",Description = "Whether the customer account is locked",GroupName = "Status")] public bool IsLocked { get;set; } } 我的观点看起来像这样: @model Customer <div class="edit-customer"> @foreach (var property in ViewData.ModelMetadata.Properties.Where(p => !p.IsReadOnly).OrderBy(p => p.Order)) { <div class="editor-row"> @Html.DevExpress().Label(settings => { settings.AssociatedControlName = property.PropertyName; settings.Text = property.DisplayName; settings.ToolTip = property.Description; }).GetHtml() <span class="editor-field"> @Html.DevExpress().TextBox(settings => { settings.Name = property.PropertyName; settings.Properties.NullText = property.Watermark; settings.Width = 200; settings.Properties.ValidationSettings.RequiredField.IsRequired = property.IsRequired; settings.ShowModelErrors = true; }).Bind(ViewData[property.PropertyName]).GetHtml() </span> </div> } </div> 然后根据元数据很好地布置表单,标签,工具提示,水印等都从模型的元数据中拉出;但是,我希望能够将这些项目组合在一起,例如在< fieldset>中.每组.有没有人知道如何从元数据中获取GroupName,而不是为ModelMetadata编写扩展方法? 解决方法
DataAnnotationsModelMetadataProvider不解析GroupName.因此,即使使用扩展方法,也无法从ModelMetadata对象中获取它.
您可以实现自己的提供程序,扩展现有的提供程序以添加对GroupName的支持,Brad Wilson explains in his blog. 您也可以编写自己的属性而不是使用Display(GroupName =)并实现IMetadataAware接口以将组名添加到ModelMetadata.AdditionalValues. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 可以将图像添加到ASP.NET按钮吗?
- ASP.NET MVC中的Dropdownlist onchange事件不使用AJAX
- asp.net-web-api – 将Application Insight与ASP API Core结
- asp.net – 如何在调用Crystal Reports ExportToHttpRespon
- asp.net-mvc – ASP.NET MVC 2预览2:区域重复控制器问题
- asp.net-mvc-3 – 在MVC3中禁用HTML.TextAreaFor
- asp.net-mvc – MVC – 如何从get请求获取参数值,该参数名称
- asp.net – 如何停止所有cassini实例?
- 从ASP.NET连接到远程MongoDB实例
- 使用asp.net在互联网上流式传输音频和视频
推荐文章
站长推荐
- asp.net – 可以postgresql扩展到像sql server这
- asp.net-mvc – 在AJAX请求之前单击按钮时的客户
- asp.net-mvc – 使用城堡温莎的实体框架
- asp.net-mvc – 带问号的MVC路由段?
- asp.net-mvc – 如何锁定一个asp.net mvc动作?
- asp.net – 什么Request.Params [“key”]呢?
- asp.net-mvc – ASP.NET MVC应用程序运行多长时间
- asp.net-mvc – 重启后浏览器不缓存资源
- asp.net-mvc – 为什么MvcApplication.RegisterR
- asp.net-mvc-3 – 设置表级别WillCascadeOnDelet
热点阅读