Я работаю над приложением ASP.NET MVC 2 и изо всех сил пытаюсь получить желаемое поведение в диалоговом окне на одной из моих страниц. Думайте об этом как об окне «Добавить новый элемент» в Visual Studio.
Когда пользователь нажимает кнопку на главной странице, я использую подключаемый модуль диалогового окна jQuery для отображения частичного представления, содержащего форму. Частичное представление строго типизировано с DataAnotations, используемыми в классе Model для определения правил проверки. Когда пользователь отправляет форму с действительными данными, я перехожу на другую страницу.
Вот мои проблемы:
- Отправка нестандартной формы (без дополнительного кода) все портит, потому что при возврате представления клиенту оно отправляется как главная страница, а не как частичное представление. Это замечательно, когда я хочу уйти и использовать одну из перегрузок RedirectXYZ в моем методе Action. Но когда я хочу вернуть только часть назад, чтобы отобразить ошибки проверки, это серьезная проблема.
- Проверка. Я хотел бы иметь возможность предоставить пользователю обратную связь, когда требуемые поля отсутствуют, и т. Д. Использование DataAnnotations означает, что я должен иметь возможность отправить страницу обратно на сервер, проверить ModelState.IsValid и вернуть то же представление, если false . Как я сказал в первом пункте, это не работает с частичными представлениями. И хотя я могу включить поддержку проверки AJAX, включив файлы MicrosoftXYZ.js, они не привязаны к кнопке отправки в диалоговом окне jQuery, поэтому их недействительность не препятствует отправке. (Кроме того, я не хочу исправлять код jQuery и AJAX, если это возможно).
Я попытался включить публикацию формы AJAX (используя плагин jQuery forms), но без проверки jQuery, работающей с DataAnnotations, я вернулся к исходной точке (плюс мне нужно было выяснить, как перенаправить страницу при успешной отправке).
Я не могу быть первым, кто попытается отобразить частичное представление, содержащее форму, в диалоговом окне jQuery, которое требует проверки. Любая помощь приветствуется, так как я потерял целый день, пытаясь найти решение.