0

我有一个可以编辑用户的表单。此表单显示为弹出窗口(我正在使用颜色框插件)。单击保存后,我希望它保留在弹出页面上,而不是关闭弹出窗口,这样我就可以显示“成功保存信息”之类的文本。现在,每当我点击保存时,它都会关闭弹出表单并返回到上一页。我可以让我的弹出窗口在保存时保持不变吗?任何帮助表示赞赏

看法

  $('.openDialog').colorbox({
                  transition: "elastic",
                  width: "40%", height: "80%"
              });

控制器

 [HttpPost]
        public ActionResult Edit(UserViewModel vm)
          {
                Save(vm);
                return View(vm);
          }

看法

<input type="submit" value="Save" id="btnSave" class="openDialog"/>

尝试使用 ajax 表单提交但弹出窗口没有转到控制器,我将不显眼的脚本添加到页面和 web 配置以及 jquery 1.8 仍然不好

 @using (Ajax.BeginForm("Edit", "User",
            new AjaxOptions
            {
                HttpMethod = "POST",
                InsertionMode = InsertionMode.Replace
            }))
4

2 回答 2

1

只需使用将 iframe 属性设置为 true 的 colorbox。最初显示表单时,添加参数iframe: true

不要$.colorbox在点击时再次调用,因此您在视图中的输入标签应该是:

<input type="submit" value="Save" id="btnSave" />

当您点击提交按钮时,会发生表单提交,并且结果将在相同的颜色框 iframe 中返回。Colorbox 在内部使用 AJAX 并创建 iframe 来为您处理所有这些,没有比这更容易的了。

要查看此方法的实际效果,请查看http://www.jacklmoore.com/colorbox/example1/,并查看名为“外部网页 (iFrame)”的 iFrame 示例,其中获取 Wiki 搜索页面,然后提交表单,都在同一个颜色框中。

于 2013-02-07T22:39:30.393 回答
1

发生的情况是您的表单正在提交,很可能是同一页面,因此页面“重新加载”,但提交的表单数据。

为了做你想做的事,你必须让你的表单通过 ajax 提交。这样,表单通过 javascript 提交,您不会重新加载页面。

在这种情况下,您的控制器不会返回视图,而是会返回一条状态消息,让您知道提交是否成功(以及您需要更新页面的任何其他内容)。

于 2013-02-07T21:07:22.247 回答