我有一个具有以下属性的模型:
[DataType(DataType.MultilineText)]
[MaxLength(512)]
public string Description
{
get
{
this.OnReadingDescription(ref _description);
return _description;
}
set
{
this.OnDescriptionChanging(ref value);
this._description = value;
this.OnDescriptionChanged();
}
}
和这样的视图:
@using AspMvcBase.Bootstrap
@model NpoDb.Presentation.Web.Models.Media
@Html.EditForm();
EditForm是一个自定义的HtmlHelper扩展,它呈现ViewModel中的每个属性。 这部分工作真的很好,但我想渲染一些不同的属性,所以我添加了[DataType(DataType.MultilineText)]属性。
如果有MultilineText的属性,我想在我的HtmlHelper中进行测试。
modelMetadata.DataTypeName.Equals(DataType.EmailAddress.ToString())
但问题是DataTypeName为null。即使我在View中查看它也是空的。
这是我发现的更好的资源之一。Brad Wilson MVC2 Template
但我无法弄清楚为什么它在我的情况下不起作用。
所以基本问题是:如何在HtmlHelper中访问属性?
我真的很感激一些帮助。 :)
答案 0 :(得分:1)
如果您尝试获取模型属性的属性,可以执行以下操作:
public static string EditForm(this HtmlHelper helper)
{
var model = helper.ViewData.Model;
var dataType = model
.GetType()
.GetProperty("Description")
.GetCustomAttribute<DataTypeAttribute>()
.DataType;
...
}