1

我正在使用 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 严格有效的,除了输入不能直接在表单中,但在其他页面上可以正常工作。服务器端代码运行成功,返回的标记完全正确。一切似乎都很好,只是结果显示在新页面上而不是在我的 div 中。我究竟做错了什么?

4

2 回答 2

3

I had the very same problem, and the solution was referencing MicrosoftAjax.js and MicrosoftMvcAjax.js, which I had forgotten.

于 2010-03-03T04:55:47.610 回答
1

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

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

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

于 2009-04-28T07:03:00.043 回答