2
我一直在使用資源文件並在標準方式下在我的視圖中引用它們,例如Resources.Labels.CountryName
。但我有一個情況我需要從資源名稱獲取資源的價值在我的C#作爲一個字符串即如何從它的字符串名稱獲取資源的值
string resourceName = "Resource.Labels.CountryName";
我怎麼會得到從這個字符串資源文件中的值?
我一直在使用資源文件並在標準方式下在我的視圖中引用它們,例如Resources.Labels.CountryName
。但我有一個情況我需要從資源名稱獲取資源的價值在我的C#作爲一個字符串即如何從它的字符串名稱獲取資源的值
string resourceName = "Resource.Labels.CountryName";
我怎麼會得到從這個字符串資源文件中的值?
通常,您會資源,
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")
。
綜合答案,謝謝...有一點點麻煩,因爲我沒有在App_GlobalResources中的資源文件,而是在內容/資源中,但已設法讓它現在工作。 – user517406 2013-04-08 13:24:20