我很难在Account.CS文件中声明一个资源。这是我的密码:
[Required(ErrorMessageResourceName= typeof @DbRes.T("Account", "EmailAddress")]
[Required(ErrorMessageResourceName = (@DbRes.T("EmailAddress", "Account")))]
[DataType(DataType.EmailAddress)]
[Display(Name = DbRes.T("EmailAddress", "Account"))]
public string EmailAddress { get; set; }发布于 2015-03-16 05:58:36
您肯定可以在MVC和验证属性上使用Westwind.Globalization。MVC验证依赖于强类型资源和类型映射,因此为了使它能够工作,您已经从dbResource文件导出了强类型的资源。。这将为db资源中的每个ResourceSet创建一个自定义强类型类。
强类型资源类如下所示:
public class Resources
{
public static System.String NameIsRequired
{
get
{
if (GeneratedResourceSettings.ResourceAccessMode == ResourceAccessMode.AspNetResourceProvider)
return (System.String) HttpContext.GetGlobalResourceObject("Resources","NameIsRequired");
if (GeneratedResourceSettings.ResourceAccessMode == ResourceAccessMode.Resx)
return ResourceManager.GetString("NameIsRequired");
return DbRes.T("NameIsRequired","Resources");
}
}
public static System.String AddressIsRequired
{
get
{
if (GeneratedResourceSettings.ResourceAccessMode == ResourceAccessMode.AspNetResourceProvider)
return (System.String) HttpContext.GetGlobalResourceObject("Resources","AddressIsRequired");
if (GeneratedResourceSettings.ResourceAccessMode == ResourceAccessMode.Resx)
return ResourceManager.GetString("AddressIsRequired");
return DbRes.T("AddressIsRequired","Resources");
}
}
... any others in the same resource set
}这与标准的.Resx强类型类非常相似,只是可以使用相同的类(DbRes ResourceManager、dbRes ASP.NET ResourceProvider或平原Resx )访问各种不同类型的资源。
然后,您可以以在ASP.NET MVC模型验证属性中引用标准Resx强类型资源的方式引用强类型资源:
public class ViewModelWithLocalizedAttributes
{
[Required(ErrorMessageResourceName = "NameIsRequired", ErrorMessageResourceType = typeof(Resources))]
public string Name { get; set; }
[Required(ErrorMessageResourceName = "AddressIsRequired", ErrorMessageResourceType = typeof(Resources))]
public string Address { get; set; }
}示例项目中有一个示例--打开Models文件夹,查看使用该视图进行本地化值的模型视图和ModelAttributesFromResources.cshtml视图。
wiki上有一个主题也描述了这一点:
发布于 2015-01-26 14:26:15
西风文档: Westwind.Globalization ASP.NET MVC支持说:
MVC应用程序最好不要使用App_LocalResources和App_GlobalResources的App_LocalResources资源体系结构。因为MVC不使用控件,基于Web窗体的提供者系统提供的任何声明性标记的任何控件查找好处都在MVC应用程序中丢失。相反,MVC应用程序倾向于最好地处理定义在.NET项目中并公开为强类型资源的传统资源。
因此,西风似乎没有解决方案,只是使RESX-文件编辑可能更容易。
//:参见Ricks注释:...You可以从db资源生成强类型资源,然后以同样的方式使用这些资源。..。在维基上有一个单独的主题。
https://stackoverflow.com/questions/27992594
复制相似问题