0

当使用DataAnnotations.Display结合本地化字符串的属性时,使用的语法如下:

public class Customer
{
    [Display(ResourceType = typeof(DisplayResources), Name = "LName")]
    public string LastName { get; set; }
}

资料来源:MSDN

显然,以下语法是不可能的:

public class Customer
{
    [Display(Name = DisplayResources.LName)]
    public string LastName { get; set; }
}

因为它会导致以下编译错误:

属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式

我还能做些什么来避免通过字符串按名称传递变量?有没有办法避免字符串类型的代码?

4

1 回答 1

1

前 Telerik 成员 Kazi Manzur Ra​​shid 有一篇文章。使用 ASP.NET MVC ModelMetadata 进行本地化。他在那里解释如何使用漂亮的框架MvcExtensions帮助文章

这是一个例子:

public class ProductEditModelConfiguration : ModelMetadataConfiguration<ProductEditModel>
{
    public ProductEditModelConfiguration()
    {
        Configure(model => model.Id).Hide();

        Configure(model => model.Name).DisplayName(() => LocalizedTexts.Name)
            .Required(() => LocalizedTexts.NameCannotBeBlank)
            .MaximumLength(64, () => LocalizedTexts.NameCannotBeMoreThanSixtyFourCharacters);

        Configure(model => model.Category).DisplayName(() => LocalizedTexts.Category)
            .Required(() => LocalizedTexts.CategoryMustBeSelected)
            .AsDropDownList("categories", () => LocalizedTexts.SelectCategory);

        Configure(model => model.Price).DisplayName(() => LocalizedTexts.Price)
            .FormatAsCurrency()
            .Required(() => LocalizedTexts.PriceCannotBeBlank)
            .Range(10.00m, 1000.00m, () => LocalizedTexts.PriceMustBeBetweenTenToThousand);
    }
}
于 2012-07-21T09:14:28.973 回答