自定义数据注释ASP.NET MVC C#
发布时间:2020-12-15 19:00:27 所属栏目:asp.Net 来源:网络整理
导读:我有关于MVC 2与C#的以下问题. 这是我的型号: public class Pmjob{ [Tooltext="Hier soll der Name eingegeben werden"] [DisplayName("Type")] public int Name { get; set; }} 现在我想在我的视图中找到Tooltext项,e. G.: @Html.ToolTextFor(Model = Mod
我有关于MVC 2与C#的以下问题.
这是我的型号: public class Pmjob { [Tooltext="Hier soll der Name eingegeben werden"] [DisplayName("Type")] public int Name { get; set; } } 现在我想在我的视图中找到Tooltext项,e. G.: @Html.ToolTextFor(Model => Model.Pmjob.Name) 或在BL: if ( Model.Pmjob.Name.Tooltext == "") { } 这可能吗? 解决方法
创建一个抽象类MetaDataAttribute:
public abstract class MetadataAttribute : Attribute { /// <summary> /// Method for processing custom attribute data. /// </summary> /// <param name="modelMetaData">A ModelMetaData instance.</param> public abstract void Process(ModelMetadata modelMetaData); } 使您的属性继承自MetaDataAttribute: public class ToolTextAttribute : MetadataAttribute { public string Text { get; set; } public TooltextAttribute(string text) { this.Text = new text; } public override void Process(ModelMetadata modelMetaData) { modelMetaData.AdditionalValues.Add("ToolText",this.Text); } } 创建自定义MetaDataProvider: public class CustomModelMetadataProvider : DataAnnotationsModelMetadataProvider { protected override ModelMetadata CreateMetadata( IEnumerable<Attribute> attributes,Type containerType,Func<object> modelAccessor,Type modelType,string propertyName) { var modelMetadata = base.CreateMetadata(attributes,containerType,modelAccessor,modelType,propertyName); attributes.OfType<MetadataAttribute>().ToList().ForEach(x => x.Process(modelMetadata)); return modelMetadata; } } 并替换默认的(global.asax.cs): protected void Application_Start() { // snipped ModelMetadataProviders.Current = new CustomModelMetadataProvider(); } 最后,您可以在视图(或Html Helper)中访问它: (string)ViewData.ModelMetadata.AdditionalValues.Where(x => x.Key == "ToolText").SingleOrDefault() 资源 : > http://weblogs.asp.net/seanmcalinden/archive/2010/06/11/custom-asp-net-mvc-2-modelmetadataprovider-for-using-custom-view-model-attributes.aspx (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 什么是ASP.Net MVC?
- 使用ASP.NET 2.0处理过期会话的最有效方法是什么
- ASP.NET Development Server未更新对标记/代码的更改
- asp.net-mvc – 从DataAnnotations MVC 3向字段添加CSS类
- asp.net-mvc – 带有用Angular2编写的部分的ASP.NET MVC项目
- 请帮助我了解ASP.NET控件的AutoPostBack属性
- asp.net – 在wcf服务中使用aspNetCompatibilityEnabled =“
- asp.net-mvc-3 – HTML编码字符串 – ASP.NET Web窗体VS Ra
- asp.net – 当用户未通过身份验证时如何处理ajax请求?
- asp.net-mvc – 在使用ASP.Net MVC的Html.TextBoxFor时,如何
推荐文章
站长推荐
- asp.net – BC30560:’ExtensionAttribute’在名
- asp.net-mvc – 需要经过身份验证的用户的Ajax调
- asp.net-mvc – 通过删除空格打破我的calc语句的
- asp.net-mvc – HttpContext.Current调用背后有多
- asp.net – Web部署不部署index.cshtml
- asp.net-web-api – 为ASP.NET Web API应用程序生
- ASP.NET汉字转拼音 - 输入汉字获取其拼音的具体实
- asp.net-mvc – HandleError属性没有任何效果
- asp.net – 我可以将ViewBag属性返回给Ajax成功回
- asp.net-mvc – MVC 4 SimpleMembership – 登录
热点阅读