【问题标题】:MVC3 Submit Ajax FormMVC3 提交 Ajax 表单
【发布时间】:2011-02-06 06:13:46
【问题描述】:

我已经阅读了很多关于这个主题的不同帖子,我将继续这样做并尝试各种事情。虽然信息有很大差异,但由于我对 MVC 等方面的经验相对缺乏,我觉得我有点绕圈子了。

情况是这样的。我在包含 jqGrid 中的记录的 MVC3 应用程序中显示(Razor)视图。双击记录会在 jQuery UI 对话框中打开该记录。原始视图仅包含表示对话框的视图。调用的操作返回一个部分视图,该视图成为对话 div 的内容。

function editItem(gridID, url) {
    var rowID = getSelectedRowID(gridID);

    if (rowID == null) {
        alert('No row selected.\r\nPlease select a row and try again.');
        return;
    }
    else {
        var grid = getGrid(gridID);

        $("#editDialogue").load(url + "/" + grid.SelectedRowID, function (html) {
            $("#editDialogue")[0].value = html;
            $("#editTabs").tabs();
            $("#editDialogue").dialog("open");
        });
    }
}

这部分工作,虽然我觉得它可以承受一点清理。我真正的问题是稍后提交该对话框中包含的表单。它应该回发到具有相同名称的操作,它确实如此。该操作应该验证并保存或返回带有验证错误的相同部分视图。目前我正试图只返回视图而不做任何其他事情。视图返回正常,但整个页面被替换,而不仅仅是对话框的内容。

我尝试了各种方法,包括使用 Ajax.BeginForm 并将对话框 div 的 id 指定为 AjaxOptions 的 UpdateTargetId。到目前为止没有任何效果。请注意,提交的表单在 div 内,因此它也会被替换。不确定这是否是问题的一部分。

我现在正在收拾行装,所以我想先发帖看看一夜之间会发生什么,然后在早上再次解决问题。

【问题讨论】:

  • 我错过了什么吗?听起来您要询问的代码实际上并未发布?那是对的吗?如果是这样,我们应该如何提供帮助?

标签: ajax asp.net-mvc-3


【解决方案1】:

jmcilhinney, 设置 AjaxOptions.UpdateTargetId 是对的,但您还需要将 AjaxOptions.InsertionMode 设置为 InsertionMode.Replace。

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题。修复是确保 jquery.unobtrusive-ajax.is 文件在页面上。这解决了我的问题。只需仔细检查即可确定。我确信我拥有所有 js 文件,但发现我缺少那个。

    【讨论】:

      猜你喜欢
      • 2011-11-06
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2011-06-17
      • 2014-02-19
      • 2011-05-09
      • 1970-01-01
      相关资源
      最近更新 更多