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

时间:2009-04-27 22:15:16

标签: asp.net-mvc asp.net-mvc-ajax

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

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,解决方案是引用了我忘记的MicrosoftAjax.js和MicrosoftMvcAjax.js。

答案 1 :(得分:1)

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

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

关于你的问题,它必须是javascript代码的一些问题,也许你没有在页面上包含ajax js库...因为如果javascript失败,表单将使用post方法正常提交在提供的行动上。 尝试在IE中打开客户端脚本调试(实际上您必须在工具/ Internet选项的高级面板中禁用“禁用脚本调试”。 或者使用Firebug用于Firefox。