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