从源App_Web_td5sjcre,NullReferenceException,"对象引用未设置为对象的实例。"发生。当我使用包含List的部分视图加载主页时会发生这种情况
@ Html.ActionLink("创建新","创建")
@model IEnumerable<ApplicationName.Models.Stuff>
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Id)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Details", "Details", new { id=item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Id })
</td>
</tr>
}
</table>
我试图将div中的主页加载到div中作为局部视图。
这是用于调用主页中的局部视图的内容:
@Html.Partial("~\Views\Home\View.cshtml")
父视图:
@{
ViewBag.Title = "Home Page";
}
<div class="row">
<div class="col-md-4">
Some stuff here.
</div>
<div class="col-lg-8">
Display list here:
<div id="myPartialview">
@*@Html.Partial("~/Views/Home/View.cshtml")*@
</div>
</div>
</div>
答案 0 :(得分:1)
您的部分视图期望将Stuff
对象的集合传递给它。我假设你在调用这个部分时没有传递非空值(一个有效的资料列表)。
所以不要这样做
@Html.partial("~View/Home/View.cshtml")
你应该这样做。
@Html.partial("~View/Home/View.cshtml",SomeVariableOfTypeStuffList)
因此,如果您的父模型被强类型化为具有List类型属性的视图模型,则可以将该属性传递给此部分。
public class HomeViewModel
{
public List<ApplicationName.Models.Stuff> Stuffs { set;get;}
public HomeViewModel()
{
this.Stuffs= new List<ApplicationName.Models.Stuff>();
}
}
因此,在父视图(Home)的GET操作中,发送此
的对象public ActionResult Home()
{
var vm=new HomeViewModel();
// to do : Load vm.Stuffs
return View(vm);
}
现在在您的主页视图中,
@model HomeViewModel
<div class="col-lg-8">
Display list here:
<div id="myPartialview">
@Html.Partial("~/Views/Home/View.cshtml",Model.Stuffs)
</div>
</div>