powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / [ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
25 сообщений из 53, страница 1 из 3
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253685
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для работы с формами (Html.BeginForm) в MVC предлагается следующая схема:

1. [GET] ActionResult Add/Edit — отдать форму клиенту
2. [POST] ActionResult Add/Edit — получить данные от клиента и..
2.1. В случае ошибки валидации отдать форму на повторное редактирование (показать ошибки, например, в ValidationSummary)
2.2. Если все ок, выполнить редирект, допустим, на Details

Что касается Ajax форм (Ajax.BeginForm), все действия выполняются аналогично, только контроллер отдаёт PartialViews, и в 2.2. надо не выполнить редирект, а передать Json с результатом.

Не нашёл как 2.2. релизовать для Ajax по фен-шую. Генерить PartialView в поле Json это совсем-совсем нехорошо. Пока наиболее кошерный вариант, передавать статус результата в кастомном HTTP заголовке (например, X-Form-Status), в зависимости от которого клиент рендерит HTML форму заново в контейнере (с ошибками валидации), или обрабатывает данные как Json с нужной логикой.

Что скажете? Есть еще варианты?
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253724
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем тебе вся эта гавнологика и чем не устроил классический вариант Html.BeginForm? Или просто для самообразования?

hVosttЧто касается Ajax форм (Ajax.BeginForm), все действия выполняются аналогично, только контроллер отдаёт PartialViews
А в Html.BeginForm запрещено работать с частичными представлениями?
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253775
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Html.BeginForm это постбек, а Ajax.BeginForm это AJAX, разница существенная. Например, это может быть форма редактирования в гриде Master-Detail, нафига загружать форму редактирования в отдельной странице, если можно здесь же в модальном окошке.
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253783
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, Html.BeginForm это постбек
О как! Откуда постбэки в ASP.NET MVC, друг? Ничего не путаешь?

hVosttа Ajax.BeginForm это AJAX, разница существенная.
Кто-то запрещает при Html.BeginForm использовать $.post / $.ajax?

hVosttНапример, это может быть форма редактирования в гриде Master-Detail, нафига загружать форму редактирования в отдельной странице, если можно здесь же в модальном окошке.
Я понимаю, изучение MVC тебе дается тяжело. Но зачем фантазировать тут, выдавая свой мусор из мыслей за чистую монету? Ведь проще спросить, когда чего-то не знаешь. Фантазировать не надо.
Вот тебе рецепт: http://codearticles.ru/articles/2256
Используется Html.BeginForm, поднимается форма, которая хостится в PartialView, как ты хотел. Загружается это добро на лету по факту, через $('<div />').load(). Чем тебе не аякс? :)

P.S. Про постбэк поржал. Это пять!
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253790
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Кастомные поделки меня сейчас совершенно не интересуют.
Если нечего сказать именно про Ajax.BeginHtml, то лучше не надо.

Кроме того в твоем решении, совершенно не обрабатывается ситуация в приведенном мною алгоритме под пунктом 2.1, ты просто тупо закрываешь форму после сабмита $(this).dialog("close"); этого делать не стоит, если валидация на сервере не прошла. в общем, не в кассу совершенно, ни комментарии, ни рецепт.
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253809
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[hVostt]МСУ,

Кастомные поделки меня сейчас совершенно не интересуют.
Если нечего сказать именно про Ajax.BeginHtml, то лучше не надо[/quot
$.post это кастомная поделка? Ты в своем уме?

[hVostt]
Кроме того в твоем решении, совершенно не обрабатывается ситуация в приведенном мною алгоритме под пунктом 2.1, ты просто тупо закрываешь форму после сабмита $(this).dialog("close"); этого делать не стоит, если валидация на сервере не прошла. в общем, не в кассу совершенно, ни комментарии, ни рецепт.[/quot]
Садись, два. Этот пункт выполняется. Ты каким местом код читаешь?
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253810
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

Кастомные поделки меня сейчас совершенно не интересуют.
Если нечего сказать именно про Ajax.BeginHtml, то лучше не надо
$.post это кастомная поделка? Ты в своем уме?

hVosttКроме того в твоем решении, совершенно не обрабатывается ситуация в приведенном мною алгоритме под пунктом 2.1, ты просто тупо закрываешь форму после сабмита $(this).dialog("close"); этого делать не стоит, если валидация на сервере не прошла. в общем, не в кассу совершенно, ни комментарии, ни рецепт.
Садись, два. Этот пункт выполняется. Ты каким местом код читаешь?
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253816
evgen12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttДля работы с формами (Html.BeginForm) в MVC предлагается следующая схема:

1. [GET] ActionResult Add/Edit — отдать форму клиенту
2. [POST] ActionResult Add/Edit — получить данные от клиента и..
2.1. В случае ошибки валидации отдать форму на повторное редактирование (показать ошибки, например, в ValidationSummary)
2.2. Если все ок, выполнить редирект, допустим, на Details

Что касается Ajax форм (Ajax.BeginForm), все действия выполняются аналогично, только контроллер отдаёт PartialViews, и в 2.2. надо не выполнить редирект, а передать Json с результатом.

Не нашёл как 2.2. релизовать для Ajax по фен-шую. Генерить PartialView в поле Json это совсем-совсем нехорошо. Пока наиболее кошерный вариант, передавать статус результата в кастомном HTTP заголовке (например, X-Form-Status), в зависимости от которого клиент рендерит HTML форму заново в контейнере (с ошибками валидации), или обрабатывает данные как Json с нужной логикой.

Что скажете? Есть еще варианты?

У Ajax.BeginForm есть OnSuccess - передаешь туда название javascript функции а в ней все что душе угодно

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
@Ajax.BeginForm(...., new AjaxOptions { OnSuccess = "loadDetails" })
{
...
}

<script>
     function loadDetails() { $('#linkToDetails').click(); }
</script>
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253823
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУ$.post это кастомная поделка? Ты в своем уме?

Еще раз говорю, меня интересует решение на Ajax.BeginForm, а не твоя кастомная поделка на $.post — это именно кастомная поделка. при чем довольно кривая, поэтому обсуждать её не будем, я не спрашивал как вообще сделать AJAX, нужно решение на Ajax.BeginForm



МСУСадись, два. Этот пункт выполняется. Ты каким местом код читаешь?

хоть каким местом этот код не читай, проверка валидации на сервере у тебя не выполняется. твой серверный POST метод возвращает Json(true)

Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public JsonResult Save(string Name)
{
    return Json(true);
}



за что отлупить бы линейкой такого кодера, да по рукам :)
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253825
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen12345,

я про этот onsuccess и говорю. он выполняется при любом ответе сервера с кодом 200. но там может быть либо невалидная форма, либо сообщение об успехе. вопрос в том, как в методе onsuccess отделить одно от другого лучше всего

чтож все такие грамотные, чуть ли шатлы в космос не запускают на шарепоинт и динамикс под бдительным пассивным руководством майкрософ, а в такой задачке теряются... видимо сверхумище даёт в голову нехило и мешает думать.
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253827
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕще раз говорю, меня интересует решение на Ajax.BeginForm
Ты дурачком долго будешь прикидываться? Мне фиолетово, что тебя интересует. Я поправил твои неверные высказывания и спросил, почему не устраивает Html.BeginForm. Ты начал дальше нести какой-то бред про постбэки и аякс. Далее, ты сказал, что мой код не работает с валидацией, я снова тебя ткнул носом в тот факт, что ты не прав. А теперь ты начинаешь съезжать с темы, мол тебя ничего это ни интересует. Если начал дискуссию на обе темы, значит держи речь до конца, не увиливай и не съезжай с темы.

hVostt$.post — это именно кастомная поделка. при чем довольно кривая, поэтому обсуждать её не будем
Вот ты опять мелечшь языком и сразу же соскакиваешь. Готов аргументировать свой ответ, почему $.post - кривая поделка?

hVosttМСУСадись, два. Этот пункт выполняется. Ты каким местом код читаешь?
хоть каким местом этот код не читай, проверка валидации на сервере у тебя не выполняется. твой серверный POST метод возвращает Json(true)
Во-первых, валидация происходит на клиенте, букварь в руки и изучай, что такое $("form").validate().form(). Во-вторых, кто тебе мешает на сервере валидировать? Тебя держат за руки и запрещают это делать?
Итого, ты ляпнул:

hVosttты просто тупо закрываешь форму после сабмита $(this).dialog("close");

Теперь ты осознал, что это не так? Еще раз, чтобы потом не было стыдно и чтобы потом не извинялся за своё гонево - валидация там есть. Точка.

hVostt
Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public JsonResult Save(string Name)
{
    return Json(true);
}


что отлупить бы линейкой такого кодера, да по рукам :)
См. выше, я уже всё написал по этому поводу. То, что ты безудержно пытаешься хоть за что-то зацепиться, чтобы окончательно не утонуть. Для танкистов еще раз повторю, суть рецепта - показать, как работают диалоги в mvc, а не о том, нужно ли валидировать что-то на сервере.
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253830
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

много слов и как обычно не по делу.

клиентская валидация это хорошо, но не панация. кто у нас недавно тут чесал языком о том, что браузеро пользователя нельзя доверять? ты мне покажешь как вернуть форму на повторное редактирование через Ajax если форма не прошла валидацию на сервере ? или дальше будешь великого умника строить из себя???
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253832
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Для танкистов еще раз повторю, суть рецепта - показать, как работают диалоги в mvc, а не о том, нужно ли валидировать что-то на сервере.

дубина ты. мне плевать на твои деалоги. если хотел показать какой ты грамотный и умеешь делать диалоги, то молодец, умеешь же, могёшь! возьми вон плюшко со стола, если дотянешься.

если тебе на заданный вопрос плевать и те лишь бы чо нить сунуть своё не в попад, то ради бога блин. преждупреждай, что ты не отвечаешь на заданный вопрос, а так мелешь отсебятину, не имеющую к топику отношения. буду подписывать твои комменты вот таким перлом: ОХ НУ И МОЛОДЕЦ ЖЕ ТЫ МСУ! и буду обсуждать тему с адекватными людьми.
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253834
evgen12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttevgen12345,

я про этот onsuccess и говорю. он выполняется при любом ответе сервера с кодом 200. но там может быть либо невалидная форма, либо сообщение об успехе. вопрос в том, как в методе onsuccess отделить одно от другого лучше всего

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

Я не совсем понимаю что именно нужно - вот мой пример, который я мучил пару дней назад - тынц

Посмотри на него и напиши какое тебе нужно поведение - может смогу помочь.
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253836
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen12345,

я сделал Изменить, получил через Ajax форму. прописал в поле Стоимость продукта, билеберду вместо цифр. форма ушла без вопросов что-то там засабмитилось. некатит.
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253839
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, много слов и как обычно не по делу.
Я тебе по делу уже всё сказал и показал. Теперь я пытаюсь выбить из тебя остальную дурь по поводу постбэков и валидации.

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


hVosttты мне покажешь как вернуть форму на повторное редактирование через Ajax если форма не прошла валидацию на сервере ? или дальше будешь великого умника строить из себя???
Вот тут есть рецепт, который показывает, что нужно сделать на сервере для клиента для отработки клиентской валидации: http://codearticles.ru/articles/2291

hVosttдубина ты. мне плевать на твои деалоги. если хотел показать какой ты грамотный и умеешь делать диалоги, то молодец, умеешь же, могёшь! возьми вон плюшко со стола, если дотянешься.
Дубину ты видишь в зеркале, двоешник. Иди постбэки пиши для mvc

hVosttесли тебе на заданный вопрос плевать и те лишь бы чо нить сунуть своё не в попад, то ради бога блин.
Десятый раз повторяю, умей задавай вопросы. А так получается, ты задаешь вопрос и тут же пишешь бред сивой кобылы. Собственно, я тебе и объясняю, что ты пишешь бред. Но ты сопротивляешься и еще больше начинаешь жечь. Это нормально?

hVosttпреждупреждай, что ты не отвечаешь на заданный вопрос, а так мелешь отсебятину, не имеющую к топику отношения. буду подписывать твои комменты вот таким перлом: ОХ НУ И МОЛОДЕЦ ЖЕ ТЫ МСУ! и буду обсуждать тему с адекватными людьми.
Я тебе уже дал все ответы. Только идиот вроде тебя не видит ответы, продолжает спорить и писать глупости. Акстись уже.
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253840
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поведение нужно следующее:

на странице есть такой <div id="ajaxForma"></div>

и Ajax.ActionLink, который при нажатии рендерит в этот див форму

у формы есть OnSuccess, который должен сделать следующее:

1. если форма не прошла валидацию на сервере отрендерить пришедшую форму еще раз в диве
2. если форма прошла валидацию на сервере , в ответе прочитать из Json нужные данные (допустим присвоенный Id и Name) ну и для примера вывести это дело под дивом (или в диве, не важно...)
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253843
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

харе тупить. ты задачу не понял. или понял, но какую-то совсем другую, возможно это я виноват — не так объясняю.
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253846
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

а да, расскажи как нам что такое постбеки на самом деле? можешь дать линку истины в первой инстанции и почему это не применимо к ASP.NET MVC? я тоже хочу знать! :)
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253847
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, харе тупить. ты задачу не понял. или понял, но какую-то совсем другую, возможно это я виноват — не так объясняю.
То, что ты не умеешь объяснять - не для кого не секрет. Вот и evgen12345 тебя нихрена не понимает. Я тебе показал, как решить задачу с помощью Html.BeginForm без каких-либо телодвижений. Ты начал херню какую-то писать. Ну что ты за человек?
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253848
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, а да, расскажи как нам что такое постбеки на самом деле? можешь дать линку истины в первой инстанции и почему это не применимо к ASP.NET MVC? я тоже хочу знать! :)
Открой для себя гугл. Мне порядком поднадоело учить талпайопа, который ничего не хочет понимать, спорит и пишет феерический бред. Из гугла ты узнаешь, что в ASP.NET MVC нет постбэков. Это для WinForms.
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253849
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЭто для WinForms.
WebForms
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253853
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну твои примеры не решают задачу. забудь про клиенсткую валидацию. мы отправляем форму пусть хрен с тобой через $.post. в ответе либо форма на повторное редактирование (т.е. кусок html, который надо отрендерить за место старой формы), либо Json с новым айдишником допустим, не важно. что тут непонятного?

Ajax.BeginForm эту задачу не решает, для него OnSuccess это любой ответ с кодом 200 — даже невалидная форма. что в принципе логично, но что делать коду, расположенному в OnSuccess? как ему понять что пришло? форма на повторное редактирование или успех?
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253855
evgen12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

Ок, сегодня вечером гляну, сейчас в кино убегаю.
...
Рейтинг: 0 / 0
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
    #38253856
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУWebForms

http://en.wikipedia.org/wiki/Postback

ничего про вебформс не сказано. ни слова. ааааа, самому надо додумывать! эт ж по-твоему логично? ))))))
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 1 из 3
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / [ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]