我宣布了一个枚举:
public enum HeightTypes{ Tall, Short}
现在我想在我的剃刀页面上使用它:
@if (Model.Meta.Height == HeightTypes.Tall)
但是当我收到错误时会出现问题。有什么方法可以告诉剃刀页面关于我的枚举吗?
答案 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" />