Аннотации данных ASP.NET: как поделиться с клиентом JSON? - PullRequest
3 голосов
/ 10 декабря 2010

У нас есть две модели данных: модели «только для чтения», отправляемые клиенту, и «контрольные» модели, отправляющие измененные данные обратно. По сути, они одинаковы, и у всех на них есть аннотации данных:

// Require nothing but one or more digits
[RegularExpression(@"^\d+$", ErrorMessage = "*")]
public string productid {get;set;}

Все наше общение проходит через методы контроллера с использованием JsonResult и Json().

Как клиент может соблюдать эти аннотации данных? В частности, как плагин JQuery, например validate, может получать эти регулярные выражения, требуемые диапазоны и т. Д. Для использования для себя?

У нас есть ответ, который включает в себя объект заголовка с вложенными коллекциями (например, список товаров List). Мы думали, что Regex может существовать в заголовке, а затем применяться ко всем полям формы. Но как мы можем перевести аннотации в сериализованный объект JSON?

1 Ответ

2 голосов
/ 10 декабря 2010

См. это сообщение в блоге.

По сути, вы вызываете метод MVC Html Helper <% Html.EnableClientValidation();%>, который выводит некоторое JSON на страницу.Затем в MicrosoftMvcJQueryValidation.js есть метод перевода, который проверяет jquery с аннотациями данных для каждого поля.


Обновление для комментариев

рендеринг HTMLFormElements без использования элементов управления mvc будет намного сложнее.Вам, вероятно, нужно взглянуть на ViewData.ModelMetadata, чтобы получить доступ к аннотациям данных.Возможно, нужно использовать пользовательский MetaDataProvider. Я бы подумал о переходе на MVC3 RC, чтобы я мог использовать ненавязчивую проверку (атрибут данных)

. Вот несколько ссылок:: Ненавязчивая проверка клиента

Брэд Уилсон: метаданные модели
...