【问题标题】:Partial Views in another Controllers View MVC5另一个控制器视图 MVC 5 中的部分视图
【发布时间】:2016-01-24 04:14:53
【问题描述】:

我刚开始在 mvc 中使用局部视图,由于某种原因无法正常工作

Notes.cshtml

@model IEnumerable<SI2.Models.DashboardNote>

@foreach (var item in Model)
{
    <div class="col-lg-12">
        <div class="well">
            <p>@Html.DisplayFor(modelItem => item.Information)</p><br />
            <p>@Html.DisplayFor(modelItem => item.DateCreate)</p>
        </div>
    </div>
}

这是我试图在另一个控制器视图中调用局部视图的地方

Home/Index.cshtml

<div class="row">
    <div class="col-lg-12">
        <div class="panel panel-default">
            <div class="panel-heading"><i class="fa fc-agenda-view"></i>   Notes</div>
            <div class="panel-body">
                @Html.Partial("~/Views/DashboardNotes/Notes.cshtml")
            </div>
        </div>
    </div>
</div>

笔记控制器

public ActionResult Notes()
{
     return View(db.DashboardNotes.ToList());
}

每次我尝试将 Notes.cshtml 作为局部视图调用时,我都会收到一个 System.NullReferenceException,其中“对象引用未设置为对象的实例”,但如果我正常运行视图,它会完美运行。两种型号的控制器也没有关系。

感谢您的帮助:)

【问题讨论】:

  • 您没有将模型传递给 Html.Partial,因此 Notes.cshtml 中的 Model 为空
  • 它仍然给出一个空值。可以举个例子吗?

标签: asp.net-mvc razor asp.net-mvc-5 asp.net-mvc-partialview


【解决方案1】:

下面的代码将呈现没有注释的部分,因此是空引用,因为你有一个用于空注释的 foreach。

@Html.Partial("~/Views/DashboardNotes/Notes.cshtml")

Html.Partial 中没有触发对服务器的调用的机制。如果您以现在的方式加载它,您将不得不在您的部分中执行某种类型的 ajax 调用来获取注释。解决此问题的最简单方法是在您的父视图或页面中返回 Notes 并将模型传递给您的部分,见下文:

@model MainViewWithNotes

<div class="row">
    <div class="col-lg-12">
        <div class="panel panel-default">
            <div class="panel-heading"><i class="fa fc-agenda-view"></i>   Notes</div>
            <div class="panel-body">
                @Html.Partial("~/Views/DashboardNotes/Notes.cshtml",MainViewWithNotes.Notes)
            </div>
        </div>
    </div>
</div>

【讨论】:

    猜你喜欢
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2017-01-30
    相关资源
    最近更新 更多