Asp.Net资源混乱

时间:2011-08-02 08:37:48

标签: asp.net-mvc resources globalization

所以我试图在一个简单的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顺利?

感谢。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我发现了一种自我挖掘方式。

我试图使用代码中Views文件夹中声明的“LocalResources”。这就是问题所在。

正确的做法是仅为视图使用这些资源文件。然后,对于代码,在根级别声明一个App_LocalResources文件夹,并将资源文件放在那里,将它们设置为公共。

那很有效。