Правильное использование диалога jQuery с частичным просмотром, проверкой и навигацией

Я работаю над приложением 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 forms), но без проверки jQuery, работающей с DataAnnotations, я вернулся к исходной точке (плюс мне нужно было выяснить, как перенаправить страницу при успешной отправке).

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


person SonOfPirate    schedule 21.04.2011    source источник


Ответы (1)


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

Проверка

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

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

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

person Robert Koritnik    schedule 21.04.2011