Ste*_*ida 10 c# asp.net-mvc annotations model asp.net-mvc-2
我有关于使用C#的MVC 2的以下问题.
这是我的模型:
public class Pmjob
{
[Tooltext="Hier soll der Name eingegeben werden"]
[DisplayName("Type")]
public int Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我想在我的视图中访问Tooltext项,例如:
@Html.ToolTextFor(Model => Model.Pmjob.Name)
Run Code Online (Sandbox Code Playgroud)
或在BL:
if ( Model.Pmjob.Name.Tooltext == "") {
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?
mat*_*ieu 26
创建一个抽象类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);
}
Run Code Online (Sandbox Code Playgroud)
使您的属性继承自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);
}
}
Run Code Online (Sandbox Code Playgroud)
创建自定义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;
}
}
Run Code Online (Sandbox Code Playgroud)
并替换默认值(global.asax.cs):
protected void Application_Start()
{
// snipped
ModelMetadataProviders.Current = new CustomModelMetadataProvider();
}
Run Code Online (Sandbox Code Playgroud)
最后,您可以在视图中(或在Html Helper中)访问它:
(string)ViewData.ModelMetadata.AdditionalValues.Where(x => x.Key == "ToolText").SingleOrDefault()
Run Code Online (Sandbox Code Playgroud)
资源 :
| 归档时间: |
|
| 查看次数: |
4569 次 |
| 最近记录: |