【问题标题】:Trouble loading a partial view from a different controller with model data使用模型数据从不同的控制器加载部分视图时遇到问题
【发布时间】:2016-07-11 09:44:25
【问题描述】:

对 MVC 很陌生,所以请多多包涵。我正在尝试从不同的控制器在模态中加载部分视图,每次尝试查看它时,我都会得到一个空的模态。我相信这是因为我无法在视图中实例化我的模型。

例如我有一个控制器“主页”,其方法“详细信息”从不同的视图文件夹返回部分视图。控制器的本机模型是“模型”,而属于我的另一个控制器的模型是“模型2”。

public ActionResult Details() {
    model2.User = user;        //this is a global variable
    model2.GetDetails();

    return PartialView("~/Views/...Details", model2);
}

我确定原因是因为我缺少视图中的模型数据。我尝试将另一个 @model... 添加到视图中,但显然这不起作用。

有没有办法做我想要完成的事情?它甚至可能是一个相对肮脏的解决方案,因为这是暂时的权宜之计。

重读这篇文章有点令人费解,所以如果需要任何澄清,请告诉我。

谢谢

【问题讨论】:

  • 你是如何尝试显示部分内容的? (您需要使用@Html.Action()
  • 嘿,我不认为这是一个问题,因为视图没有改变。它正在与另一个控制器(它的本机控制器)一起工作,但我不得不暂时将其更改为使用另一个控制器。我正在使用 ajax 调用控制器,并成功填充 div,如 $('#partial').html(data);
  • 然后显示你的相关代码并指出你的问题是什么(它只是return PartialView(model2);
  • 对于具有不同控制器的动态局部视图,使用一个视图模型来保存多个模型可能是合理的(结合stackoverflow.com/questions/7968234/…的解决方案)。

标签: c# jquery .net asp.net-mvc asp.net-mvc-4


【解决方案1】:

我曾经遇到过这个问题,我认为重现它以提供精确的解决方案需要做很多工作,但我可以提供我的 2 美分。浏览器模式的问题是您需要在打开它时提供一个 url。 URL 必须是 Controller/Action url,这是导致问题的棘手部分。如果你能弄清楚这一点,你应该能够解决问题。如果不能,您可以执行以下操作之一: 1. 打开 Modal 后,在主窗口的 JS 代码中设置 Modal 对话框的 HTML 内容。 2. 使用第 3 方 HTML/CSS 模态实现之一,并从 JS 代码中设置 HTML 内容。在这种情况下,没有浏览器模式,所有内容都在同一页面上。

要验证视图是否从 XHR 正确返回,请将 actionRoute URL 放在浏览器地址栏中,您将看到返回的内容。这将有助于排除故障。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多