2013-04-07 140 views
2

我一直在使用資源文件並在標準方式下在我的視圖中引用它們,例如Resources.Labels.CountryName。但我有一個情況我需要從資源名稱獲取資源的價值在我的C#作爲一個字符串即如何從它的字符串名稱獲取資源的值

string resourceName = "Resource.Labels.CountryName"; 

我怎麼會得到從這個字符串資源文件中的值?

回答

2

通常,您會資源,

GetLocalResourceObject("~/VirtualPath", "ResourceKey"); 
GetGlobalResourceObject("ClassName", "ResourceKey"); 

您可以適應這一點。我寫我自己擴展的HTML幫助這樣一個全球資源:

public static string GetGlobalResource(this HtmlHelper htmlHelper, string classKey, string resourceKey) 
{ 
    var resource = htmlHelper.ViewContext.HttpContext.GetGlobalResourceObject(classKey, resourceKey); 
    return resource != null ? resource.ToString() : string.Empty; 
} 

我認爲,在這個你的榜樣,你會得到的資源與@Html.GetGlobalResource("Labels", "CountryName")你的看法。

由於當地資源所需要的虛擬路徑,我不希望它被寫入到視圖,我用這個組合,這給雙方機會:

public static string GetLocalResource(this HtmlHelper htmlHelper, string virtualPath, string resourceKey) 
{ 
    var resource = htmlHelper.ViewContext.HttpContext.GetLocalResourceObject(virtualPath, resourceKey); 
    return resource != null ? resource.ToString() : string.Empty; 
} 

public static string Resource(this HtmlHelper htmlHelper, string resourceKey) 
{ 
    var virtualPath = ((WebViewPage) htmlHelper.ViewDataContainer).VirtualPath; 
    return GetLocalResource(htmlHelper, virtualPath, resourceKey); 
} 

有了,你可以得到一個本地資源非常在你看來,寫作@Html.Resource("Key")很舒服。或者使用第一種方法獲取其他視圖的本地資源,如@Html.GetLocalResource("~/Views/Home/AnotherView.cshtml", "Key")

+0

綜合答案,謝謝...有一點點麻煩,因爲我沒有在App_GlobalResources中的資源文件,而是在內容/資源中,但已設法讓它現在工作。 – user517406 2013-04-08 13:24:20

相關問題