Я использую шаблоны jQuery для группы сайтов, над которыми я работаю, и достиг точки, когда мне нужно решить, как реализовать проверку, на стороне клиента.Серверная часть - это сервис Asp.Net Mvc Restful, который работает с различными моделями.Модели украшены DataAnnotations для описания проверки.Ниже приведен пример (обратите внимание, что мы используем файл ресурсов для копии ошибки):
[Required(
ErrorMessageResourceType = typeof(Validation),
ErrorMessageResourceName = "HomeAddressRequired")]
[StringLength(250,
ErrorMessageResourceType = typeof(Validation),
ErrorMessageResourceName = "HomeAddressStringLength")]
public string Address { get; set; }
Ранее я просто использовал Razor (или старый движок представления Asp.Net, пока мы не переключились на Mvc 3).), который обрабатывал создание всех клиентских украшений, необходимых для подключения к jquery.validate.js.Теперь, когда я использую шаблоны jQuery, это не так жизнеспособно.
Здесь я вижу три варианта:
Измените шаблоны, чтобы вручную включитьпроверка и копия ошибки .Этот отстой, потому что я буду вынужден поддерживать проверку клиента и сервера отдельно;Это как бы убивает всю идею DataAnnotations.
Использование ненавязчивого подхода Javascript к Razor и Mvc 3, чтобы помочь мне сделать шаблоны .Лучше, так как он воспроизводит проверку для меня, но при достижении производительности.Также означает, что я использую шаблонизатор на стороне сервера ... для рендеринга шаблонов.Я могу свести к минимуму снижение производительности за счет кэширования вывода.
Полагаться исключительно на удаленную проверку, которая возвращает состояния моделей для моих моделей, и написать собственный адаптер для jQuery Validate для обработки ошибок маршрутизации.на соответствующий элемент .Этот способ обходится без использования Razor, но убивает чистую проверку на стороне клиента и означает, что мне нужно написать сложный плагин.
В идеале, когда мы развернем эту вещь, я должен быть в состоянии обслуживатьшаблоны для клиента в виде статического файла без какой-либо прямой бэкэнд-зависимости.
Итак, на мой вопрос: Использование jQuery шаблонов на стороне клиента и DataAnnotations на моей модели сервера, что является наиболее эффективным средством обработки проверки безповторяюсь?