2011-08-02 106 views
0

所以我試圖在一個簡單的網絡3.5/Mvc2網站使用本地和全球資源。Asp.Net資源混淆

首先,我嘗試在全局資源中設置我的驗證消息,但隨後出現了第一個問題:在DataAnnotations屬性上設置全局資源時沒有提供任何錯誤,但是在運行時它不會從中恢復字符串運行時錯誤)。示例代碼:

[Required(
     ErrorMessageResourceType = typeof(Resources.Global), 
     ErrorMessageResourceName = "LastNameRequired")] 
    public string LastName { get; set; } 

全球資源不能被設置爲公共的(我認爲這就是問題所在),所以我覺得移動在當地資源DataAnnotations被使用的消息:

[Required(
     ErrorMessageResourceType = typeof(Views.MyApp.App_LocalResources.Apply_aspx), 
     ErrorMessageResourceName = "LastNameRequired")] 
    public string LastName { get; set; } 

這給我帶來了2點備用的問題:如果我設置了本地資源建立行動=內容資源被正確使用的方法GetLocalResourceObject的觀點看,但我得到試圖從DataAnnotations閱讀它們時,以下幾點:

找不到適合特定文化或中性文化的資源。確保「MyNamespace.Website.Mvc.Views.MyApp.App_LocalResources.Apply.aspx.resources」在編譯時正確嵌入或鏈接到程序集「MyNamespace.Website.Mvc」中,或者確保所有需要的附屬程序集均可加載並完全籤。

然後我試着設置build action = embedded資源。這樣App_LocalResources文件夾沒有得到出版,我在嘗試讀取視圖本地資源與GetLocalResouceObject如果出現以下錯誤:

此頁的資源類沒有被發現。請檢查資源文件是否存在,然後重試。

我明顯嘗試谷歌周圍的解決方案,但我找不到任何類似於我的方案,所以我在這裏問。

我必須做些什麼才能使順暢?

謝謝。

回答

0

我發現了一種自己挖掘方式。

我正在嘗試使用代碼中的視圖文件夾中聲明的「LocalResources」。這是問題所在。

正確的做法是僅將這些資源文件用於視圖。然後,爲代碼,在根級聲明一個App_LocalResources文件夾,並將資源文件放在那裏,將它們設置爲公共。

工作。