MVC 5 显示属性问题
MVC 5 Display attribute issue
枚举Class
public enum DataReleaseChoice
{
Accept,
Decline,
[Display(Name = "Retrieve your application")]
Continue
}
在我看来:
<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@DataReleaseChoice.Accept" class="btn btn-primary" />
<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@DataReleaseChoice.Decline" class="btn btn-primary" />
我想要做的就是为新的 "Continue" 按钮添加一行,但它应该显示 DisplayAttributes 值 ("Retrieve your application")
我查看了 How to get the Display Name Attribute of an Enum member via MVC razor code? 中提供的示例,但我很难在 Razor 视图中使用它。我可以使用以下代码在控制器中显示值,
var displayAttribute = PAI.Web.Utilities.EnumHelper<DataReleaseChoice>.GetDisplayValue(DataReleaseChoice.Continue);
但是当我在剃刀视图中使用相同的内容时,
<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@PAI.Web.Utilities.EnumHelper<DataReleaseChoice>.GetDisplayValue(DataReleaseChoice.Continue)" class="btn btn-primary" />,
我收到错误
Using the generic type 'EnumHelper<T>' requires 1 type arguments
我正在使用 MVC 5.2.3,并且在其他论坛上了解到 MVC 5 支持开箱即用的枚举的 DisplayAttribute。不过我很难使用它。
使用此扩展方法获取 DisplayName
控制器或视图中的枚举:
public static class EnumExtension
{
public static string GetDisplayName(this Enum value)
{
var enumType = value.GetType();
var enumName = Enum.GetName(enumType, value);
var member = enumType.GetMember(enumName)[0];
var attributes = member.GetCustomAttributes(typeof (DisplayAttribute), false);
var outString = string.Empty;
outString = ((DisplayAttribute) attributes[0]).ResourceType != null
? ((DisplayAttribute) attributes[0]).GetName()
: ((DisplayAttribute)attributes[0]).Name;
return outString;
}
}
<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@DataReleaseChoice.Continue.GetDsiplayName()" class="btn btn-primary" />,
枚举Class
public enum DataReleaseChoice
{
Accept,
Decline,
[Display(Name = "Retrieve your application")]
Continue
}
在我看来:
<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@DataReleaseChoice.Accept" class="btn btn-primary" />
<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@DataReleaseChoice.Decline" class="btn btn-primary" />
我想要做的就是为新的 "Continue" 按钮添加一行,但它应该显示 DisplayAttributes 值 ("Retrieve your application")
我查看了 How to get the Display Name Attribute of an Enum member via MVC razor code? 中提供的示例,但我很难在 Razor 视图中使用它。我可以使用以下代码在控制器中显示值,
var displayAttribute = PAI.Web.Utilities.EnumHelper<DataReleaseChoice>.GetDisplayValue(DataReleaseChoice.Continue);
但是当我在剃刀视图中使用相同的内容时,
<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@PAI.Web.Utilities.EnumHelper<DataReleaseChoice>.GetDisplayValue(DataReleaseChoice.Continue)" class="btn btn-primary" />,
我收到错误
Using the generic type 'EnumHelper<T>' requires 1 type arguments
我正在使用 MVC 5.2.3,并且在其他论坛上了解到 MVC 5 支持开箱即用的枚举的 DisplayAttribute。不过我很难使用它。
使用此扩展方法获取 DisplayName
控制器或视图中的枚举:
public static class EnumExtension
{
public static string GetDisplayName(this Enum value)
{
var enumType = value.GetType();
var enumName = Enum.GetName(enumType, value);
var member = enumType.GetMember(enumName)[0];
var attributes = member.GetCustomAttributes(typeof (DisplayAttribute), false);
var outString = string.Empty;
outString = ((DisplayAttribute) attributes[0]).ResourceType != null
? ((DisplayAttribute) attributes[0]).GetName()
: ((DisplayAttribute)attributes[0]).Name;
return outString;
}
}
<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@DataReleaseChoice.Continue.GetDsiplayName()" class="btn btn-primary" />,