asp.net – 从HTML帮助器中的参数获取属性
所以假设我有一个小模型对象,其中包含一个必需的字符串,最大长度为50:
public class ObjectModel { [Required] [MaxLength(50)] public string Name { get; set; } } 我需要创建一个自定义HTML帮助器,我可以传入一个字符串(在本例中为ObjectModel.Name),如果需要,创建一个类“必需”的HTML输入元素. 现在,我正在努力: public static HtmlString Input(string label) { return new HtmlString("<input type="text" />"); } 所以在我的Razor视图中,如果我执行类似@ InputHelper.Input(Model.Name)的操作,则无法访问属性.我的问题是,如何构建我的HTML帮助程序类以接受Model属性及其属性? 所以我取得了进一步的进展,但我仍然没有足够的经验来浏览表达式以获得我想要的东西.现在,我有: @ InputHelper.Input(m => Model.Title.TitleName,“titlename2”,“Title Name”) 第二个和第三个参数与此问题无关.在辅助方法中,我有: public static HtmlString Input(Expression< Func< string,Object>> expression,string id,string label) 但是当我去调试代码时,有很多对象和属性需要筛选,我不知道我的Required和MaxLength属性在哪里,如果他们甚至在那里. 解决方法
您可以使用以下扩展方法获取Required和MaxLength属性:
public static class ExpressionExtensions { public static TAttribute GetAttribute<TIn,TOut,TAttribute>(this Expression<Func<TIn,TOut>> expression) where TAttribute : Attribute { var memberExpression = expression.Body as MemberExpression; var attributes = memberExpression.Member.GetCustomAttributes(typeof(TAttribute),true); return attributes.Length > 0 ? attributes[0] as TAttribute : null; } } 然后从你的代码中你可以做到: public static HtmlString Input(Expression<Func<string,string label) { var requiredAttribute = expression.GetAttribute<string,object,RequiredAttribute>(); if (requiredAttribute != null) { // some code here } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net Web应用程序中的静态变量
- 集成ASP.NET身份的最佳做法 – 它们是否存在?
- asp.net-mvc – 如何在MVC中排除此syntext中的另一个属性[B
- asp.net-mvc – ModelState.IsValid总是返回false
- asp.net – 无法访问IIS元数据库
- asp.net – Web部署项目构建不再属于项目的文件
- asp.net-mvc-3 – 在asp.net MVC 3中使用WIF,我在哪里定义S
- asp.net-core – visual studio 2015没有看到我的xunit测试
- asp.net-mvc – 已定义以下部分但尚未为布局页面“?/ Views
- asp.net-mvc – ASP.NET MVC – 与使用模型注释相比,使用自
- IIS虚拟目录和ASP.NET目录路径
- .net – TagBuilder从MVC 3 beta版转到RC
- asp.net-mvc – 使用MVC为iPhone应用构建RESTful
- asp注入
- asp.net-mvc – 错误NU1002项目WebApplication1中
- asp.net-mvc-3 – 使用参数清理URL以获取MVC索引
- asp.net-mvc – 为什么在ASP.NET MVC 3中,默认路
- asp.net-mvc – 自定义Web-Api FilterAttribute的
- asp.net-mvc-2 – 将复杂对象从View传递给Contro
- asp.net-mvc-3 – 使用ViewData将字符串从Contro