2011-08-11 120 views
4

我目前在ASP.NET MVC項目中有一個本地資源文件。這個文件的目標是讓非程序員編輯網頁上的文本。問題是資源文件是嵌入式資源並在ASP.NET MVC部署中編譯。這意味着他們將有視覺工作室來改變網站的副本。這是非最佳的:)ASP.NET MVC - 非嵌入式資源文件

有沒有一種方法可以使用ASP.NET MVC中的資源文件,這會導致服務器上的.resx文件讓管理員類型的人員能夠編輯?

另一種選擇是把它放在數據庫中,並有一些前端來編輯它,但我真的很想避免這個選項,因爲它對於一個小網站上的幾個文本字段來說過於複雜。

謝謝!

+0

難道一定是嵌入式的資源? –

+0

如果我將其作爲嵌入式資源刪除,則使用資源的頁面將失敗。我不是很瞭解資源,所以我不確定如何使它以非嵌入的方式工作 - 因此是這個問題。 – anonymous

回答

6

一旦這樣做,就是確保資源不被編譯。

當您添加資源文件(例如TextResource.resx)時,您可以以類型安全的方式訪問資源。

例如:

ViewBag.Message = Resources.TextResource.MyMessage; 

後添加一個資源文件(*的.resx),在Solution Explorer中選中它並查看其屬性。清除「自定義工具」屬性。默認情況下,它包含值「GlobalResourceProxyGenerator」。只要刪除這個值。

這有一個缺點,但是因爲您不能再以類型安全的方式訪問資源。您必須使用當前HttpContext的GetGlobalResourceObjectGetLocalResourceObject方法加載它們。

例如:

ViewBag.Message = this.HttpContext.GetGlobalResourceObject("TextResource", 
        "Hello", CultureInfo.CurrentUICulture); 

這樣你就可以手動更改資源文件(*的.resx)。然後,您可以選擇構建一個可以讀取和修改資源文件內容的應用程序,這些文件只是XML文件。

例如:

http://www.codeproject.com/KB/cs/Editing_a_ResourceFile.aspx