我在GetEnumDescription中使用的对象'YogaSpaceAccommodation'似乎是棕色的,没有找到。或者这里的某些内容在语法方面是不正确的。
<div id="AccomodationTypeSelector">
<select class="form-control" id="SpaceAccommodation" name="YogaSpaceAccommodation">
<option id="default">0</option>
@{
var accomodationValues = Enum.GetValues(typeof(YogaSpaceAccommodation));
foreach (var value in accomodationValues)
{
var index = (int)@value; var description = @EnumHelper.GetEnumDescription
<YogaSpaceAccommodation>(@index.ToString());
}
}
</select>
</div>
EnumDescription看起来像这样
public static string GetEnumDescription<T>(string value)
{
Type type = typeof(T);
var name = Enum.GetNames(type).Where(f => f.Equals(value, StringComparison.CurrentCultureIgnoreCase)).Select(d => d).FirstOrDefault();
if (name == null)
{
return string.Empty;
}
var field = type.GetField(name);
var customAttribute = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
return customAttribute.Length > 0 ? ((DescriptionAttribute)customAttribute[0]).Description : name;
}
答案 0 :(得分:0)
找出您的枚举所在的命名空间,并在View的顶部添加using声明。假设您的名称空间为MyApp.Data.Enums
,您可以添加:
@using MyApp.Data.Enums
通过@model声明到视图的顶部。您还可以通过位于views文件夹中的web.config添加命名空间:
<system.web.webPages.razor>
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="MyApp.Data.Enums" />
</namespaces>
</pages>
</system.web.webPages.razor>
请注意,当您进行这些更改时,通常必须关闭并重新打开intellisense的视图才能赶上。您可能需要正在使用的辅助函数的命名空间。