我很想在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>
}
这是我试图在另一个控制器视图中调用局部视图的地方
主/ 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>
Notes控制器
public ActionResult Notes()
{
return View(db.DashboardNotes.ToList());
}
每当我尝试将Notes.cshtml作为局部视图调用时,我都会收到一个System.NullReferenceException,其中“对象引用未设置为对象的实例”,但如果我正常运行视图则会完美运行。两种型号的控制器之间也没有关系。
感谢您的帮助:)
答案 0 :(得分:3)
下面的代码会使你的部分没有注释,因此是空引用,因为你有一个空注释的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>