另一个控制器视图中的部分视图 MVC5

Partial Views in another Controllers View MVC5

我不熟悉在 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 作为局部视图调用时,我都会收到带有 "Object reference not set to an instance of an object" 的 System.NullReferenceException,但如果我 运行 视图通常是 运行非常完美。两种型号的控制器也没有任何关系。

感谢您的帮助:)

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

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

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

@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>