Почему файл общего ресурса не работает в моем проекте Silverlight RIA? - PullRequest
0 голосов
/ 05 января 2010

Я работаю над проектом Silverlight с бета-тестированием WCF RIA Services. Я использую файл BlahDomainService.metadata.cs для проверки поля путем добавления атрибутов проверки, например, [RegularExpression]. Это работало, поэтому я пытаюсь поместить сообщение об ошибке в файл ресурсов, и теперь оно не работает. Проверка RegEx не выполняется на клиенте, хотя она выполняется на сервере.

Есть идеи, что может быть причиной этого?

В сгенерированном файле кода на клиенте я вижу эту ошибку:

// 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) в проекте .Web в папке с именем Resources. В проекте Silverlight я создал веб-папку и в этой папке ресурсы. В эту папку «Ресурсы» я добавил Add> Existing Item, а затем добавил SharedResources.resx и .Designer.cs, используя опцию «Добавить как ссылку». Идея заключалась в том, что это позволит сохранить одинаковые пространства имен для двух классов ресурсов. Затем я отредактировал файл .csproj, чтобы сделать файл .Designer.cs зависимым от файла .resx, используя шаблон бизнес-приложения Silverlight в качестве ссылки.

Я построил решение и протестировал его, и проверка RegEx не выдает ошибку, что плохо. Тогда я нашел сообщение выше. Чтобы убедиться, что мои ссылки работали, в Home.xaml.cs я набрал:

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

и увидел ошибку в окне вывода в VS. Я также отправил изменения в службу, и в EntitiesInError на VaidationErrors я вижу сообщение об ошибке, поэтому я знаю, что оно работает на стороне сервера. Это просто клиентская сторона, которой нет. Есть идеи, почему это не работает?

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Вы также добавили ресурсы (.resx) в качестве ссылки в клиентском проекте Silverlight для веб-проекта. Смотрите шаблон приложения Silverlight Bussiness Application в VS 2010. У него очень хороший образец.

0 голосов
/ 06 января 2010

Все было хорошо, за исключением того, что я не установил AccessModifier для .resx в Public. Как только я сделал это и перестроил все, все заработало.

...