自定义数据注释ASP.NET MVC C#
|
我有关于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 Ajax – Asynch请求有单独的会话吗?
- asp.net-mvc – HttpContext.Items与ASP.NET MVC
- asp.net-mvc – asp.net mvc – 在哪里存储userid – integ
- asp.net-mvc-3 – 在App_code文件夹中使用razor @helper使用
- 不确定人数的抽奖方法
- asp.net-mvc – 在Html.ActionLink的linkText中使用HTML标签
- asp.net – 具有html5中的文本以外的输入类型的UpdatePanel
- asp.net-mvc – Ninject和连接字符串
- asp.net – 添加context.Response.Headers.Add(“Cache-Con
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文
