asp*_*net 3 asp.net data-annotations asp.net-mvc-2
我试图弄清楚如何在我的MVC 2 ViewModel中使用DisplayAttribute来使用Html.LabelFor()帮助器.
也不
public class TestModel
{
[Display(ResourceType = typeof(Localization.Labels))]
public string Text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
也不
public class TestModel
{
[Display(Name = "test")]
public string Text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
似乎工作.本地化必需属性按预期工作:
[Required(ErrorMessageResourceName = "Test", ErrorMessageResourceType = typeof(Localization.Labels))]
Run Code Online (Sandbox Code Playgroud)
我正在使用VS2010 RC.有人跑了吗?
Lev*_*evi 12
[Display]属性是特定于.NET 4的属性.由于MVC 2是针对.NET 3.5编译的,因此运行时无法识别此属性.
有关更多信息和解决方法,请参阅http://aspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=5515.
编辑:
呃,工作项目不是那么大.也可以包括内联.:)
[Display]属性是DataAnnotations v4中的新属性,因此MVC 2无法使用它,因为我们是针对DataAnnotations v3.5编译的.使用[DisplayName]直到MVC 3,我们将根据DataAnnotations v4编译.
你有一些解决方法.当.NET 4 RTM时,我们将提供特定于.NET 4的Futures二进制文件,Futures二进制文件将具有一个能够理解[Display]和其他DataAnnotations v4特定属性的元数据提供程序.或者,如果您需要立即使用解决方案,请为[DisplayName]属性创建子类,创建一个适当实例化的私有DisplayNameAttribute字段,并覆盖虚拟DisplayNameAttribute.DisplayName属性,以便委托给_theWrappedDisplayNameAttribute.GetName().
public class MultiCulturalDisplayName : DisplayNameAttribute {
private DisplayAttribute display;
public MultiCulturalDisplayName(Type resourceType, string resourceName) {
this.display = new DisplayAttribute { ResourceType = resourceType, Name = resourceName };
}
public override string DisplayName {
get { return display.GetName(); }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9604 次 |
| 最近记录: |