我声明了一个枚举:
public enum HeightTypes{ Tall, Short}
现在我想在我的 Razor 页面上使用它,就像这样:
@if (Model.Meta.Height == HeightTypes.Tall)
但是出现了一个问题,我收到了一个错误。有没有办法告诉 Razor 页面我的枚举类型?
我声明了一个枚举:
public enum HeightTypes{ Tall, Short}
现在我想在我的 Razor 页面上使用它,就像这样:
@if (Model.Meta.Height == HeightTypes.Tall)
但是出现了一个问题,我收到了一个错误。有没有办法告诉 Razor 页面我的枚举类型?
您的枚举声明中存在错误(请删除末尾的;
):
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)
{
}
但是为了避免在所有需要使用此枚举的 Razor 视图中执行此操作,更容易地将其声明在 ~/Views/web.config
的 <namespaces>
部分中:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="SomeAppName.Models" />
</namespaces>
</pages>
</system.web.webPages.razor>
@using
。 - Darin Dimitrov以下是一个从头到尾的示例:
C# CS页面
namespace MyProject.Enums
{
public enum CurveBasis
{
Aggregates,
Premium
}
}
Razor视图
@using MyProject.Enums
<select id="dlCurveBasis">
<option value="@CurveBasis.Aggregates">Aggregates</option>
<option value="@CurveBasis.Premium">Premium</option>
</select>
您没有具体说明异常,所以我猜测这是一个命名空间问题。请添加
@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" />