【问题标题】:MVC PartialViewResult direct and from other ActionResultMVC PartialViewResult 直接和来自其他 ActionResult
【发布时间】:2018-09-12 18:31:32
【问题描述】:

我的 MVC 中有一个 PartialViewResult。 如果我直接在浏览器中打开它,我会从我的模型中获得数据。如果我在其他视图中打开它,我没有数据。你能告诉我为什么吗?

控制器文件:

public PartialViewResult PartialData() {
  return PartialView(dataTable);
}

CSHTML 文件:

@model System.Data.DataTable
@using System.Data;

@this.Model.Columns[0]

从另一个 CSHTML 调用

@Html.Partial("RunningJobs")

这一行的错误:@this.Model.Columns[0]

对象引用尚未设置为对象实例。

【问题讨论】:

  • @Html.Partial() 不调用服务器方法,并且您没有将模型传递给视图,因此它的 null - 您需要使用 @Html.Action("PartialData", yourControllerName)

标签: .net asp.net-mvc razor partial-views


【解决方案1】:

当您从浏览器打开它时,意味着您正在点击“PartialData”操作,您已经在传递模型(即 dataTable)。 但是,当您从另一个 CSHTML 加载局部视图时,您没有传递任何模型并且它为空。尝试在主视图中使用@Html.RenderAction 而不是使用@Html.Partial。

我认为以下内容应该对您有所帮助 -

@Html.RenderAction("PartialData")

【讨论】:

    【解决方案2】:

    当在父视图中调用局部视图时,您必须将模型传递给父视图

    public ActionResult ShowParentView() {
      return view(dataTable);
      } 
    

    【讨论】:

      猜你喜欢
      • 2012-01-24
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多