ASP.NET MVC AjaxForms Submit
От: SomewhereSomehow Россия  
Дата: 27.04.11 08:50
Оценка:
Добрый день всем.

Вопрос:
Поскажите плз, кто сталкивался. Нужно в ответ на действие пользователя, обновить часть страницы.
Ипользую ajax forms (Ajax.BeginForm), DropDownList и input type="submit". Сценарий использования: юзер выбирает что-то из комбобокса, нажимает сабмит, часть формы обновляется. Все прекрасно работает.
Но я бы очень хотел релизовать сценрий без кнопки сабмит. Т.е. выбираешь что-то в комбобоксе — часть страницы меняется.
Можно ли это реализовать? Т.к. мои опыты пока безуспешны =(

Что пробовал:
Пробовал повесить сабмит на событие DropDownList onchange, прописывая в onchange, что-то вроде document.forms[0].submit(); или document.myform.submit(); и т.д. Но при этом, для искусстенно вызванного таким образом сабмита — явно не срабатвает какая-то внутренняя кухня microsoft ajax (судя по дебагеру не происходит вызова события onsubmit и сотв. регистрации обработчиков этого события) и ответ от сервера (являющийся частичным представлением) обновляет все содерджимое страницы а не ее часть.

Кто что подскажет?
Спасибо.
asp.net mvc ajaxforms submit
Re: ASP.NET MVC AjaxForms Submit
От: SomewhereSomehow Россия  
Дата: 28.04.11 08:44
Оценка: :)
Думаю вопрос можно снять.
Заставить событие onsubmit срабатывать можно при помощи примерно такого трюка: в обработчике события onchange у дропдаунлист-а, прописывать не напрямую submit(), а через вызов функции javascript:setTimeout('bla-blf submit()',0) с нулевым значением таймаута (подглядел это в коде который генерит asp.net в обычных web forms, при установке у дропдауна свойства автопостбэк). Только это не помогло, событие конечно срабатывает, но дальше надо допиливать и с этим допиливанием — все это начинает напоминать кусок ujdfy. В итоге после 4 часов попыток "доработать напильником" решение от мс, сделал все через jQuery.ajax за 20 минут.
Искренне не понимаю зачем создавать такие решения, когда шаг влево, шаг вправо — расстрел (имхо, очень многие новинки от мс в последнее время являются "грандиозным обманом").
Re[2]: ASP.NET MVC AjaxForms Submit
От: rameel https://github.com/rsdn/CodeJam
Дата: 28.04.11 16:49
Оценка:
Здравствуйте, SomewhereSomehow, Вы писали:

SS>Думаю вопрос можно снять.

SS>Заставить событие onsubmit срабатывать можно при помощи примерно такого трюка: в обработчике события onchange у дропдаунлист-а, прописывать не напрямую submit(), а через вызов функции javascript:setTimeout('bla-blf submit()',0) с нулевым значением таймаута (подглядел это в коде который генерит asp.net в обычных web forms, при установке у дропдауна свойства автопостбэк). Только это не помогло, событие конечно срабатывает, но дальше надо допиливать и с этим допиливанием — все это начинает напоминать кусок ujdfy. В итоге после 4 часов попыток "доработать напильником" решение от мс, сделал все через jQuery.ajax за 20 минут.

Что вы и как делали? Поностью пример можете показать? А то я как ни старался ни с какими трудностями не столкнулся ни сейчас ни до этого .

вот вам на коленке написанный минимальный рабочий пример:
<div id="container">empty<br /></div>

@using (Ajax.BeginForm("HelloWorld",
    new AjaxOptions
        {
            InsertionMode  = InsertionMode.InsertAfter,
            UpdateTargetId = "container"
        })) {
    
    <select name="tests" onchange="javascript:jQuery(this).parents('form').submit();">
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
}


SS>Искренне не понимаю зачем создавать такие решения, когда шаг влево, шаг вправо — расстрел (имхо, очень многие новинки от мс в последнее время являются "грандиозным обманом").


Как видите ни каких приседаний, плясок и танцев с бубном
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.