asp.net-mvc-3 – 无法在MVC3 HTML Helper中获取自定义属性值
发布时间:2020-12-16 03:37:26 所属栏目:asp.Net 来源:网络整理
导读:我用一个需要来自模型属性的属性值的方法扩展了 HTML帮助器.所以我已经定义了一个自定义属性. public class ChangeLogFieldAttribute : Attribute { public string FieldName { get; set; } } 在我的模型中使用它就像这样. [Display(Name = "Style")] [Chang
我用一个需要来自模型属性的属性值的方法扩展了
HTML帮助器.所以我已经定义了一个自定义属性.
public class ChangeLogFieldAttribute : Attribute { public string FieldName { get; set; } } 在我的模型中使用它就像这样. [Display(Name = "Style")] [ChangeLogField(FieldName = "styleid")] public string Style { get; set; } 在我的帮助方法中,如果属性用于属性,我有以下代码来获取属性的FieldName值. var itemName = ((MemberExpression)ex.Body).Member.Name; var containerType = html.ViewData.ModelMetadata.ContainerType; var attribute = ((ChangeLogFieldAttribute[])containerType.GetProperty(html.ViewData.ModelMetadata.PropertyName).GetCustomAttributes(typeof(ChangeLogFieldAttribute),false)).FirstOrDefault(); if (attribute != null) { itemName = attribute.FieldName; } 但是,当我到达此代码时,我得到一个异常,因为containerType为null. 我不确定我是否正在做任何正确的事,但是我从大约4个不同的来源中取得了这一点.如果您可以建议解决我的问题或替代方案,我将不胜感激. 谢谢. 更新解决方案 我使用了Darin Dimitrov的解决方案,虽然我不得不调整它.这是我添加的内容.我必须检查属性metatdata的存在,一切都很好. var fieldName = ((MemberExpression)ex.Body).Member.Name; var metadata = ModelMetadata.FromLambdaExpression(ex,html.ViewData); if (metadata.AdditionalValues.ContainsKey("fieldName")) { fieldName = (string)metadata.AdditionalValues["fieldName"]; } 解决方法
您可以使属性元数据识别:
public class ChangeLogFieldAttribute : Attribute,IMetadataAware { public string FieldName { get; set; } public void OnMetadataCreated(ModelMetadata metadata) { metadata.AdditionalValues["fieldName"] = FieldName; } } 然后在助手里面: var metadata = ModelMetadata.FromLambdaExpression(ex,htmlHelper.ViewData); var fieldName = metadata.AdditionalValues["fieldName"]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在ASP.NET应用程序中创建类的实例
- NHibernate中对同一个对象的Lazyload要设置一致
- Asp.Net MVC是企业项目的合适解决方案吗?
- asp.net – 如何强制netwtonsoft json序列化程序序列化date
- asp.net – 为网站设置expire标头需要多长时间?
- 剃刀 – 我应该在哪里包含视图组件的脚本?
- asp.net-mvc – 在ASP.NET MVC中实现“记住我”功能
- asp.net – Windows Azure缓存预览
- asp.net – 当页面用鼠标悬停在元素上时,jQuery触发鼠标悬停
- asp.net-mvc-4 – IE中的MVC VS2012 jquery.validate.js错误
推荐文章
站长推荐
- asp.net – sitecore模板标准值布局不更新所有项
- ASP.Net Web API在VS中正确显示但提供HTTP500
- asp.net – 如何通过LINQ获得第一级的孩子
- asp.net-mvc-3 – 如何将单选按钮与ASP.Net MVC中
- ASP.NET Web Forms 4.5模型绑定,其中模型包含一个
- asp.net-mvc – 为什么DisplayFor不向Action方法
- ASP.NET有一个复选框列表,在4×5网格中有我很好的
- ASP.NET MVC – 如何抛出与StackOverflow类似的4
- asp.net – 从ASP .Net下载文件时,文本文件会附加
- ASP.NET+d3.js实现Sqlserver数据库的可视化展示
热点阅读