2009-04-27 2 views
1

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

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

<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 строго допустима, за исключением того, что входные данные не могут быть непосредственно в форме, но это отлично работает на других страницах. Код Serverside успешно завершен, и возвращаемая разметка совершенно правильная. Все кажется прекрасным, за исключением того, что результат отображается на новой странице, а не внутри моего div. Что я делаю не так?

+0

Что возвращает ваше действие? A PartialView? JsonResult? –

+0

Он возвращает частичный вид. –

ответ

1

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

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

И отношение к вашей проблеме, она должна быть какой-то проблемой с яваскриптом кодом, может быть, вы не включили Аякс библиотеки JS на странице ... Потому что, если Javascript сбой, форма будет отправляться обычно с использованием метода post на предоставленное действие. Попробуйте включить отладку клиента сценариев в IE (на самом деле вы должны отключить «отключить отладку сценариев» в продвинутом панели в Tools/Internet Options. Или использовать Firebug для Firefox.

+0

Когда я это делаю, возникает такая же проблема на другой странице, но когда я нажимаю невидимую кнопку отправки, проблема исчезает. Как я уже сказал, я отлаживал все сценарии, все они работают нормально. Я убедился, что я включаю все необходимые библиотеки js. –

3

Я имел ту же самую проблему, и решение ссылалось на MicrosoftAjax.js и MicrosoftMvcAjax.js, которые я забыл.

+0

Это была моя рекомендация. Если у вас нет этих файлов сценариев, они ведут себя так же, как вы описали. Проверьте Firebug или Fiddler, чтобы увидеть, что они загружаются. –