65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.80/5 (11投票s)

2012年2月17日

CPOL

1分钟阅读

viewsIcon

62590

downloadIcon

1436

一组 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 属性

就像 DropDownListDropDownListFor 一样,您可以使用自定义 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"})

参考文献

© . All rights reserved.