自定义数据注释ASP.NET MVC C#
我有关于使用C#的MVC 2的以下问题。
这是我的模型:
public class Pmjob { [Tooltext="Hier soll der Name eingegeben werden"] [DisplayName("Type")] public int Name { get; set; } }
现在我想在我的视图中到达Tooltext项,例如:
@Html.ToolTextFor(Model => Model.Pmjob.Name)
或在BL:
if ( Model.Pmjob.Name.Tooltext == "") { }
这可能吗?
创建一个抽象类MetaDataAttribute:
public abstract class MetadataAttribute : Attribute { /// /// Method for processing custom attribute data. /// /// A ModelMetaData instance. public abstract void Process(ModelMetadata modelMetaData); }
使您的属性inheritance自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 attributes, Type containerType, Func
并替换默认值(global.asax.cs):
protected void Application_Start() { // snipped ModelMetadataProviders.Current = new CustomModelMetadataProvider(); }
最后,您可以在视图中(或在Html Helper中)访问它:
(string)ViewData.ModelMetadata.AdditionalValues.Where(x => x.Key == "ToolText").SingleOrDefault()
资源 :