Правильное использование диалога jQuery с частичным просмотром, проверкой и навигацией - PullRequest
2 голосов
/ 21 апреля 2011

Я работаю над приложением ASP.NET MVC 2 и изо всех сил пытаюсь получить желаемое поведение из диалогового окна на одной из моих страниц.Думайте об этом как о чем-то вроде окна «Добавить новый элемент» в Visual Studio.

Когда пользователь нажимает кнопку на главной странице, я использую плагин диалога jQuery для отображения частичного представления, содержащего форму.Частичное представление имеет строгий тип с DataAnotations, используемыми в классе Model для определения правил проверки.Когда пользователь отправляет форму с действительными данными, я перехожу на другую страницу.

Вот мои проблемы:

  1. Отправка формы «из коробки» (нетлишний код) все портит, потому что возвращение представления обратно клиенту отправляет его как главную страницу, а не частичное представление.Это замечательно, когда я хочу уйти и использовать одну из перегрузок RedirectXYZ в моем методе Action.Но когда я хочу вернуть только частичное обратно для отображения ошибок проверки, это является серьезной проблемой.
  2. Проверка.Я хотел бы быть в состоянии предоставить пользователю обратную связь, если обязательные поля отсутствуют и т. Д. Использование DataAnnotations означает, что я должен иметь возможность отправить страницу обратно на сервер, проверить ModelState.IsValid и вернуть то же представление, если false,Как я сказал в первом пункте, это не работает с частичными представлениями.И хотя я могу включить поддержку проверки AJAX, включив файлы MicrosoftXYZ.js, они не привязаны к кнопке отправки в диалоговом окне jQuery, поэтому недопустимость не препятствует отправке.(Кроме того, я не хочу исправлять код JQuery и AJAX, если это возможно).

Я попытался включить публикацию формы в AJAX (с помощью плагина форм jQuery), но без проверки jQuery, работающей с DataAnnotations, я вернулся на круги своя (плюс мне пришлось бы выяснить, как перенаправитьстраница при успешной отправке).

Я не могу быть первым, кто попытается отобразить частичное представление, содержащее форму, в диалоговом окне jQuery, которое требует проверки.Любая помощь очень ценится, так как я потерял целый день, пытаясь найти решение.

1 Ответ

1 голос
/ 22 апреля 2011

Поскольку вы используете всплывающие окна Javascript и отправляете данные на сервер, я предлагаю вам использовать Ajax. Так что все будет работать как положено. Если пользователь нажимает Сохранить , это нормально, что ваша всплывающая форма отправляется, сохраняется и закрывается на клиенте (и, скорее всего, обновляет главную страницу, на которой всплывающее окно).

Проверка

Так или иначе. Это сообщение в блоге не будет полностью отвечать на ваш вопрос, но позволит вам обрабатывать ошибки проверки модели при более правильном использовании запросов Ajax. Это объясняет проблему в мельчайших деталях и предоставляет код, который вы можете использовать как есть.

Перенаправление

Относительно перенаправлений HTTP это немного сложнее, поскольку браузеры делают это по-разному. Тем не мение. Другой вопрос stackoverflow попытается ответить на этот вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...