如何在MVC3中的Razor页面上使用Enums?

时间:2011-07-10 12:03:53

标签: c# asp.net-mvc razor

我宣布了一个枚举:

public enum HeightTypes{    Tall,    Short}

现在我想在我的剃刀页面上使用它:

@if (Model.Meta.Height == HeightTypes.Tall)

但是当我收到错误时会出现问题。有什么方法可以告诉剃刀页面关于我的枚举吗?

3 个答案:

答案 0 :(得分:20)

您的枚举声明中有错误(删除尾随;):

public enum HeightTypes { Short = 0, Tall = 1 }

然后以下测试应该有效:

@if (Model.Meta.Height == HeightTypes.Tall)
{

}

您只需要确保您的视图是强类型的,并且您已将定义了Height枚举的命名空间纳入范围:

@using SomeAppName.Models
@model SomeViewModel

或像这样引用枚举:

@if (Model.Meta.Height == SomeAppName.Models.HeightTypes.Tall)
{

}

但为了避免在需要使用此枚举的所有剃刀视图中执行此操作,可以更轻松地在<namespaces>的{​​{1}}部分中声明它:

~/Views/web.config

答案 1 :(得分:11)

只是给出一个从头到尾的例子:

C#CS Page

namespace MyProject.Enums
{
    public enum CurveBasis
    {
        Aggregates,
        Premium
    }
}

Razor View

@using MyProject.Enums

<select id="dlCurveBasis">
    <option value="@CurveBasis.Aggregates">Aggregates</option>
    <option value="@CurveBasis.Premium">Premium</option>
</select>

答案 2 :(得分:0)

你没有具体说明异常,所以我猜测这是一个命名空间问题。添加

@using The.Namespace.Of.Your.Enum;

在顶部。如果要使用该命名空间,还可以指定在/Views/web.config中自动添加的命名空间:

<system.web.webPages.razor>
    ...
    <pages ...>
        <namespaces>
            <add namespace="System.Web" />
            ...
            <add namespace="The.Namespace.Of.Your.Enum" />