2010-02-19 104 views
3

我有一個MVC web應用程序,它使用資源文件的自定義文件夾&命名空間。我需要能夠從我的資源文件中提取後期綁定值,即使用資源類型和字符串。我試過使用:使用GetGlobalResourceObject獲取資源值*無*使用GetGlobalResourceObject獲取資源值

HttpContext.GetGlobalResourceObject("ResourceClass", "SomeKey") 

但是,返回null。當我將資源移動到App_GlobalResources時,它可以工作,但會級聯到其他問題。我嘗試着通過這些工作,但它們似乎比我回到我原來只能從自定義文件夾中的資源文件中讀取的計劃更深入和更多。

簡而言之,我試圖本地化我的xVal驗證,錯誤消息以及RegEx驗證程序的模式。我已經做好了一切工作,除了這一塊,我試圖本地化模式。由於這不是DataAnnotations.RegularExpressionAttribute中的內容,我需要根據屬性中提供的資源類型和名稱自行獲取它。因此我的困境。

我可以使用其他方法獲取資源值嗎?或者,我的資源文件必須駐留在App_GlobalResources文件夾中嗎?如果是後者,那麼我將需要爲所有其他問題展開另一次討論 - 或者爲正則表達式實現一些粗糙的本地化形式。

在此先感謝。

Jerad

回答

4

這是我們想出瞭解決方案:

public static class ResourceHelper 
{ 
    public static string GetString(Type resourceType, string resourceName) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetString(resourceName); 
    } 

    public static string GetString(Type resourceType, string resourceName, CultureInfo culture) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetString(resourceName, culture); 
    } 

    public static object GetObject(Type resourceType, string resourceName) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetObject(resourceName); 
    } 

    public static object GetObject(Type resourceType, string resourceName, CultureInfo culture) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetObject(resourceName, culture); 
    } 
}