Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / [ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm / 25 сообщений из 53, страница 1 из 3
11.05.2013, 15:36
    #38253685
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
Для работы с формами (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
11.05.2013, 16:41
    #38253724
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
Зачем тебе вся эта гавнологика и чем не устроил классический вариант Html.BeginForm? Или просто для самообразования?

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

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

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

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

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

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

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

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

МСУ$.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
11.05.2013, 18:54
    #38253825
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
evgen12345,

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

чтож все такие грамотные, чуть ли шатлы в космос не запускают на шарепоинт и динамикс под бдительным пассивным руководством майкрософ, а в такой задачке теряются... видимо сверхумище даёт в голову нехило и мешает думать.
...
Рейтинг: 0 / 0
11.05.2013, 19:02
    #38253827
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
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
11.05.2013, 19:12
    #38253830
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[ASP.NET MVC 4] Аналог Http.BeginForm() GET->POST->Redirect для Ajax.BeginForm
МСУ,

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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