如何在视图中获取Model类型

时间:2014-10-13 13:13:42

标签: asp.net-mvc razor

如何在View本身中找出View模型的类型?

我尝试拨打GetType

@model MyModel

<div>@Model.GetType()</div>
除非Model为空,否则

有效,在这种情况下,我得到NullReferenceException

不幸的是,它也无法做到

@model MyModel

<div>@typeof(TModel)</div>

因为TModel在Razor视图的上下文中不可用。

3 个答案:

答案 0 :(得分:4)

尝试:

@ViewData.ModelMetadata.ModelType

判断模型的值是否为null,并且它是内置的。不需要创建帮助器。

答案 1 :(得分:1)

这样做的一种方法是在HtmlHelper<TModel>

上创建一个帮助扩展程序
public static class HtmlHelperExtensions
{
    public static Type GetModelType<TModel>(this HtmlHelper<TModel> helper)
    {
        return typeof(TModel);
    }
}

然后你可以这样使用

@using HtmlHelperExtensions
@model MyModel

<div>@Html.GetModelType()</div>

答案 2 :(得分:0)

您可以先检查它是否为空,然后获取类型,即:

@if(Model != null) {
<div>@Model.GetType()</div>
}