ASP.NET MVC показывает результат ajax на новой странице вместо UpdateTargetId - PullRequest
1 голос
/ 28 апреля 2009

Я использую Ajax.BeginForm для выполнения запроса ajax, но asp.net mvc отображает результаты на новой странице вместо div, который я установил в UpdateTargetId. Я гарантировал, что у меня есть только один div с тем же именем на странице.

Сгенерированная разметка:

<form action="/MyController/MyAction" id="myform" method="post" onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'myDiv', onSuccess: Function.createDelegate(this, someJsFunction) });">
    <input type="text" name="name" id="userInput" value="" />
    <input type="submit" id="mySubmit" style="display:none" />
    </form><div id="myDiv"></div>

Здесь кнопка отправки не отображается, потому что я щелкаю ее с помощью JavaScript (я использую тот же метод на другой странице, которая работает):

$(document).ready(function() {
            $("[name:'name']").bind("keyup", function() {
                $("#mySubmit").click();
            })

Я использую последнюю версию asp.net mvc. Я не получаю ошибок скрипта, я дважды проверил, все идентификаторы уникальны, все функции js существуют и работают без ошибок. Разметка строго верна в формате HTML, за исключением того, что входные данные не могут быть непосредственно в форме, но это прекрасно работает на других страницах. Серверный код выполняется успешно, и возвращаемая разметка совершенно верна. Все выглядит хорошо, за исключением того, что результат отображается на новой странице, а не внутри моего div. Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 03 марта 2010

У меня была та же проблема, и решением было обращение к файлам MicrosoftAjax.js и MicrosoftMvcAjax.js, которые я забыл.

1 голос
/ 28 апреля 2009

Прежде всего, общий совет: почему вы нажимаете невидимую кнопку отправки для отправки? Вы также можете просто использовать:

 $("#myform").submit();

Что касается вашей проблемы, то, должно быть, это какая-то проблема с кодом javascript, может быть, вы не включили библиотеку ajax js на страницу ... Потому что, если javascript завершится неудачно, форма будет отправлена ​​с использованием метода post на поставляемом действии. Попробуйте включить отладку клиентских скриптов в IE (на самом деле вы должны отключить «отключить отладку скриптов» в расширенной панели «Сервис» / «Свойства обозревателя»). Или используйте Firebug для Firefox.

...