DataType mvc为空

时间:2014-02-11 11:37:24

标签: c# asp.net-mvc asp.net-mvc-4

我有一个具有以下属性的模型:

[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中访问属性?

我真的很感激一些帮助。 :)

1 个答案:

答案 0 :(得分:1)

如果您尝试获取模型属性的属性,可以执行以下操作:

public static string EditForm(this HtmlHelper helper)
{
   var model = helper.ViewData.Model;
   var dataType = model
        .GetType()
        .GetProperty("Description")
        .GetCustomAttribute<DataTypeAttribute>()
        .DataType;
    ...
}