0

我正在使用WCF RIA Services測試版來開發Silverlight項目。我正在使用BlahDomainService.metadata.cs文件通過添加驗證屬性來驗證字段,例如[正則表達式]。它正在工作,所以我試圖將錯誤消息放在資源文件中,現在它不起作用。 RegEx驗證不在客戶端上運行,儘管它正在服務器上運行。爲什麼我的共享資源文件不能在我的Silverlight RIA項目中工作?

任何想法可能會造成這種情況?

在客戶端上生成的代碼文件,我看到這個錯誤:

// Unable to generate the following attribute due to the following error(s): // // - The validation attribute 'System.ComponentModel.DataAnnotations.RegularExpressionAttribute' declared ErrorMessageResourceName='RegExError' which was not found on declared ErrorMessageResourceType 'Blah.Web.Resources.SharedResources'. // [RegularExpressionAttribute("yawn", ErrorMessageResourceName = "RegExError", ErrorMessageResourceType = typeof(Blah.Web.Resources.SharedResources))]

我是如何得到我的

我創建了SharedResources.resx(和Vs的創建SharedResources .Designer.cs)文件放在名爲Resources的文件夾中.Web項目中。在Silverlight項目中,我創建了一個Web文件夾,並在其中創建了一個Resources文件夾。在此Resources文件夾中,我執行了Add> Existing Item,然後使用Add as Link選項添加SharedResources.resx和.Designer.cs。這個想法是,這將保持兩個資源類的命名空間相同。然後,我使用Silverlight Business Application模板作爲參考編輯.csproj文件,使.Designer.cs文件成爲.resx文件的依賴項。

我構建瞭解決方案並對其進行了測試,RegEx驗證未拋出錯誤,這很糟糕。然後我發現上面的消息。爲了驗證我的鏈接是工作,在Home.xaml.cs,我輸入:

System.Diagnostics.Debug.WriteLine(Web.Resources.SharedResources.RegExError);

,並在VS. Output窗口看到錯誤我也向服務提交了更改,並且在EntityInError中,在VaidationErrors上,我可以看到錯誤消息,所以我知道它在服務器端工作。只是客戶端不是。任何想法爲什麼它不工作?

回答

0

除了我沒有將.resx的AccessModifier設置爲Public之外,一切都還好。一旦我完成了並重建所有,它就起作用了。

+0

我也面臨同樣的問題你能詳細解釋一下plz的解決方案嗎? 謝謝 – 2010-08-30 13:19:34

+0

右鍵單擊Visual Studio中的.resx文件名。選擇打開。在頂部你會看到字符串 - 添加資源 - 刪除資源 - [工具圖標] - 訪問修改器 - 在下拉列表中選擇公共。 – serialhobbyist 2010-08-31 13:27:06

1

您還可以在Web項目的客戶端silverlight項目中添加資源(.resx)作爲鏈接。 請參閱VS 2010中的Silverlight商業應用程序模板。它有一個很好的示例。

相關問題