【问题标题】:MVC return view to dialogMVC 将视图返回到对话框
【发布时间】:2014-11-21 16:10:09
【问题描述】:

在我的布局视图中

@Html.MakePopup(new MakePopupParams
    {
        Action = "Create",
        Title = "New Job Offer",
        Modal = true,
        Resizable = false,
        Height = 450,
        Width = 750,
        Position = "center"
    })

    <div style="padding-left: 10px">
        @Html.PopupActionLink(new PopupActionLinkParams
        {
            Action = "Create",
            Text = "Add new Job Offer",
            HtmlAttributes = new { @class = "btn btn-success btn-small" }
        })
    </div>

这会呈现一个按钮,该按钮会创建一个对话框,其中呈现视图(创建)。 一切正常。

问题是当我提交表单时,如果 ModelState 无效,我想返回视图、模型和验证消息。 但是如果我像这样返回视图

// there is something wrong with the data values
            return View(newOffer);

浏览器将视图显示为一个整体。

如何将视图返回到打开的对话框?

【问题讨论】:

  • 您正在使用一个弹出窗口,但您想使用 PopupForm,您可以从 codeplex awesome.codeplex.com/releases/view/66067 下载 Awesome v 1.9(您正在使用的那个)Demo
  • 在弹出的情况下使用ajax提交而不是正常提交​​表单。

标签: jquery asp.net-mvc asp.net-mvc-5 asp.net-mvc-awesome


【解决方案1】:

如果问题在于您的视图正在获取围绕它的站点布局,您应该能够通过指定它是部分视图来避免这种情况:

return PartialView(newOffer);

更新

您需要让对话框中的按钮或表单被 JavaScript 处理程序拾取,该处理程序通过 AJAX 提交表单并将对话框内容替换为从服务器返回的内容。 Here's one example 你会怎么做。

【讨论】:

  • 结果相同。视图呈现为“主页”而不是返回到对话框
  • @MiguelTeixeira:对不起,我认为您的问题是返回的“整个页面”显示在您的对话框中。我已经更新了我的答案。请记住,这是一个简单的答案,还有其他警告。例如,javascript 处理程序如何决定是更新对话框还是更改整个页面?您需要自己决定如何处理复杂的部分。
【解决方案2】:

您正在使用仅创建弹出窗口的 Popup 助手, PopupForm 创建一个处理表单提交的弹出窗口,还添加了一个确定和取消按钮

http://awesome.codeplex.com/wikipage?title=PopupForm


因此,在您的情况下,由于未处理提交,因此浏览器将视图作为一个整体显示,您应该改用 PopupForm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多