【问题标题】:ASP.NET MVC shows ajax result in a new page instead of UpdateTargetIdASP.NET MVC 在新页面而不是 UpdateTargetId 中显示 ajax 结果
【发布时间】:2009-04-27 22:15:16
【问题描述】:

我正在使用 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 中。我做错了什么?

【问题讨论】:

  • 您的操作会返回什么?一个看法?部分视图?一个 JsonResult?

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


【解决方案1】:

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

【讨论】:

  • 这将是我的建议。如果您没有这些脚本文件,它的行为就像您描述的那样。检查 Firebug 或 Fiddler 以查看它们是否正在加载。
【解决方案2】:

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

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

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

【讨论】:

  • 当我这样做时,在另一个页面中会出现同样的问题,但是当我单击一个不可见的提交按钮时,问题就消失了。正如我所说,我调试了所有脚本,它们都工作正常。我确保我包含了所有必要的 js 库。
猜你喜欢
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
相关资源
最近更新 更多