Я работаю над проектом 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 я вижу сообщение об ошибке, поэтому я знаю, что оно работает на стороне сервера. Это просто клиентская сторона, которой нет. Есть идеи, почему это не работает?