ASP.NET MVC:为枚举创建本地化下拉列表






4.80/5 (11投票s)
一组 HTML 辅助方法,用于生成枚举的下拉列表,支持或不支持本地化。
引言
一组 HTML 辅助方法,用于生成枚举的下拉列表,支持或不支持本地化。
目录
HTML 辅助方法概述
我创建了一组 HTML 辅助方法,用于为枚举生成一个 DropDownList
。这些辅助方法类似于 DropDownList 方法 和 DropDownListFor 方法,唯一的区别在于这些辅助方法将使用指定枚举的元素填充 DropDownList
。
一些示例 – 基本用法
假设以下模型
public enum WeekDay
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
public class WeeklyEvent
{
public string Title { get; set; }
public WeekDay Day { get; set; }
public WeekDay? AnotherDay { get; set; }
}
设置元素名称和默认空项目文本
这是最基本的用法,生成的文本将是 enumValue.ToString()
// name="eventDay"
@Html.EnumDropDownList<WeekDay>("eventDay", "Select an item")
// name="Day"
@Html.EnumDropDownListFor<WeeklyEvent, WeekDay>(x => x.Day, "Select an item")
Html.EnumDropDownListFor
也适用于可空类型
@Html.EnumDropDownListFor<WeeklyEvent, WeekDay?>(x => x.AnotherDay, "Select an item")
使用 [Description] 属性
您可以使用 DescriptionAttribute
自定义文本
public enum WeekDay
{
[Description("Domingo")]
Sunday,
[Description("Segunda")]
Monday,
[Description("Terça")]
Tuesday,
[Description("Quarta")]
Wednesday,
[Description("Quinta")]
Thursday,
[Description("Sexta")]
Friday,
[Description("Sábado")]
Saturday
}
使用自定义 HTML 属性
就像 DropDownList
和 DropDownListFor
一样,您可以使用自定义 HTML 属性。
@Html.EnumDropDownList<WeekDay>("eventDay", "Select an item", new { @class="select"})
@Html.EnumDropDownListFor<WeeklyEvent, WeekDay>(x => x.Day, "Select an item" , new { @class="select"})
更多示例 – 本地化支持
枚举值的资源文件键遵循以下命名约定:{EnumName}.{EnumValue}。 考虑以下资源 – 类型 MyResources
使用 [LocalizationEnum] 属性
只需将 [LocalizationEnum]
属性设置为枚举,并指定资源对象的类型
[LocalizationEnum(typeof(MyResources))]
public enum WeekDay
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
用法与前面的示例相同
@Html.EnumDropDownList<WeekDay>("selectDay", "")
指定资源对象类型
如果您无法或不想使用 [LocalizationEnum]
属性,可以使用以下辅助方法指定资源类型
@Html.EnumDropDownList<WeekDay, MyResources>("selectDay", "")
@Html.EnumDropDownListFor<WeeklyEvent, WeekDay, MyResources>(x => x.Day, "", new {id = "myEventDay"})