我希望能够在编辑器模板中测试[AllowHtml]属性的属性。
ViewData.ModelMetadata
内似乎没有潜伏。
我已经尝试遍历ViewData.ModelMetadata.AdditionalValues
以查看它是否存在,但似乎并非如此。
我已经搜索了Google和Brad Wilson's post on templates,但我无法在任何地方找到答案。
答案 0 :(得分:1)
我相信你必须在模板中做一些繁重的工作,如:
var allowHtmlAttribute = this.ViewData.ModelMetadata
.ContainerType
.GetProperty(this.ViewData.ModelMetadata.PropertyName)
.GetCustomAttributes(typeof(AllowHtmlAttribute), false)
.Select(a => a as AllowHtmlAttribute)
.FirstOrDefault(a => a != null);
现在我考虑一下,扩展方法会很棒!
public static class ModelMetadataExtensions
{
public T GetPropertyAttribute<T>(this ModelMetadata instance)
where T : Attribute
{
var result = instance.ContainerType
.GetProperty(instance.PropertyName)
.GetCustomAttributes(typeof(T), false)
.Select(a => a as T)
.FirstOrDefault(a => a != null);
return result;
}
}
然后
var myAttribute = this.ViewData.ModelMetadata
.GetPropertyAttribute<AllowHtmlAttribute>();