使用getobject()抛出MissingManifestResourceException

时间:2012-10-04 22:32:28

标签: asp.net-mvc localization resources resourcemanager

我使用Resources在我的MVC应用程序中存储不同的字符串以用于本地化目的。 我正在使用HttpHandler来处理JavaScript并将Translate(KEY)调用更改为来自资源的实际本地化字符串值。 这是来自Localize text in JavaScript files in ASP.NET

问题是当我从资源管理器调用getObject方法时,我得到MissingManifestResourceException Could not find any resources appropriate for the specified culture or the neutral culture.

这是相关的代码部分(错误来自下面代码段中的第6行):

private string TranslateScript(string text)
{
    MatchCollection matches = REGEX.Matches(text);
    ResourceManager manager = new ResourceManager(typeof(CamelotShiftManagement.Strings.SharedStrings));

    foreach (Match match in matches)
    {
        object obj = manager.GetObject(match.Groups[1].Value, CultureInfo.CurrentCulture); //This throws the MissingManifestResourceException for some reson!!!!
        if (obj != null)
        {
            text = text.Replace(match.Value, CleanText(obj.ToString()));
        }
    }

    return text;
}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

好的,我发现了问题,但我无法解释为什么会发生这种情况。 (尚)

我发现了这篇文章Problems with ResourceManager and neutral culture in Asp.Net MVC 并遵循他所做的步骤。 我已经开始行了:

ResourceManager manager = new ResourceManager(typeof(CamelotShiftManagement.Strings.SharedStrings));

要:

ResourceManager manager = CamelotShiftManagement.Strings.SharedStrings.ResourceManager;

基本上,您似乎每个资源文件都有一个静态参与处理此资源文件的ResourceManager。

这解决了我的问题。 话虽如此,我仍然不确定为什么我之前使用的方法不起作用......