ASP.NET MVC在新页面中显示ajax结果而不是UpdateTargetId

问题描述:

我正在使用Ajax.BeginForm创建ajax请求,但asp.net mvc在新页面中显示结果而不是在UpdateTargetId中设置的div。我确保我在页面上只有一个具有相同名称的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。我没有得到任何脚本错误,我仔细检查了所有的id是唯一的,所有的js函数都存在并且没有错误地工作。该标记是html严格有效的,除了输入不能直接在表单中,但在其他页面上正常工作。 Serverside代码成功运行,返回的标记完全正确。一切似乎很好,除了结果显示在新的页面而不是我的div内。我究竟做错了什么?

+0

什么是你的行动回报?风景吗?一个PartialView?一个JsonResult? – 2009-04-27 22:18:42

+0

它返回一个局部视图。 – 2009-04-28 06:51:58

首先是一个常规提示:为什么点击一个不可见的提交按钮才能提交? 你也可以只使用:

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

和涉及您的问题,这一定是有些问题的JavaScript代码,也许你并没有包括AJAX JS在页面上图书馆......因为如果JavaScript的失败时,表单将使用所提供操作的post方法正常提交。 尝试在IE中打开客户端脚本调试(实际上你必须在工具/ Internet选项的高级面板禁用“禁用脚本调试”。 或者使用Firebug为Firefox浏览器。

+0

当我这样做时,同样的问题在另一个页面中,但是当我点击一个不可见的提交按钮时,问题就消失了。正如我所说的,我调试了所有的脚本,它们都工作正常,我确定我包含了所有必需的js库。 – 2009-04-28 11:19:37

我有同样的问题,而溶液中引用MicrosoftAjax.js和MicrosoftMvcAjax.js,我已经忘了。