所以我试图在一个简单的Net 3.5 / Mvc2站点中使用本地和全局资源。
首先,我尝试在全局资源中设置验证消息,但随后出现了第一个问题:在DataAnnotations属性上设置全局资源不会产生错误,但在运行时它只是不从中恢复字符串(没有错误)在运行时也)。示例代码:
[Required(
ErrorMessageResourceType = typeof(Resources.Global),
ErrorMessageResourceName = "LastNameRequired")]
public string LastName { get; set; }
无法将全局资源设置为公共(我认为这是问题)所以我想在本地资源中移动要在DataAnnotations中使用的消息:
[Required(
ErrorMessageResourceType = typeof(Views.MyApp.App_LocalResources.Apply_aspx),
ErrorMessageResourceName = "LastNameRequired")]
public string LastName { get; set; }
这让我遇到了两个备用问题:如果我将本地资源设置为构建action = content,则使用GetLocalResourceObject
方法从视图中正确读取资源,但是当我尝试从中读取资源时,我会得到以下内容DataAnnotations:
无法找到适合指定文化或中性文化的任何资源。确保在编译时将“MyNamespace.Website.Mvc.Views.MyApp.App_LocalResources.Apply.aspx.resources”正确嵌入或链接到程序集“MyNamespace.Website.Mvc”中,或者所有所需的附属程序集都是可加载的并且完全可以签名。
然后我尝试设置构建操作=嵌入资源。这样,App_LocalResources文件夹就不会被发布了,尝试使用GetLocalResouceObject
从视图中读取本地资源时出现以下错误:
找不到此页面的资源类。请检查资源文件是否存在,然后重试。
我显然试图谷歌寻找解决方案,但我找不到任何类似于我的场景的东西,所以我在这里问。
我需要做些什么来使evertything顺利?
感谢。
答案 0 :(得分:0)
尝试以下链接
http://haacked.com/archive/2009/12/12/localizing-aspnetmvc-validation.aspx
MVC Data annotation in different languages?
如果没有人适合你,请告诉我们!!
答案 1 :(得分:0)
我发现了一种自我挖掘方式。
我试图使用代码中Views文件夹中声明的“LocalResources”。这就是问题所在。
正确的做法是仅为视图使用这些资源文件。然后,对于代码,在根级别声明一个App_LocalResources文件夹,并将资源文件放在那里,将它们设置为公共。
那很有效。