将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表达式或数组创建表达式
我还能做些什么来避免通过字符串传递变量?有没有办法避免使用字符串类型的代码?
答案 0 :(得分:1)
前Telerik成员Kazi Manzur Rashid有一篇文章。 Localization with ASP.NET MVC ModelMetadata。他正在解释如何使用漂亮的框架MvcExtensions(help articles)
以下是一个例子:
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);
}
}