Asp.net mvc PartialView呈现未在主页上呈现,引发HttpExceptionn
我正在学习MVC,并试图在主页上呈现一个局部视图。 我发现以下错误: “HttpException” 我非常简单的模型如下:Asp.net mvc PartialView呈现未在主页上呈现,引发HttpExceptionn,asp.net-mvc,asp.net-mvc-partialview,Asp.net Mvc,Asp.net Mvc Partialview,我正在学习MVC,并试图在主页上呈现一个局部视图。 我发现以下错误: “HttpException” 我非常简单的模型如下: public class simpleModel { public int id { get; set; } public string Name { get; set; } } 控制器: public ActionResult ShowNames() { UsersContext db = new UsersContext();
public class simpleModel
{
public int id { get; set; }
public string Name { get; set; }
}
控制器:
public ActionResult ShowNames()
{
UsersContext db = new UsersContext();
return PartialView(db.SimpleModels.ToList());
}
局部视图:
@model List<MvcApplication1.Models.simpleModel>
@if (Model != null)
{
<ul>
@foreach (var item in Model)
{
<li>@item.Name</li>
}
</ul>
}
@型号列表
@如果(型号!=null)
{
@foreach(模型中的var项目)
{
- @项目名称
}
}
我希望呈现局部视图的主页是
@{
ViewBag.Title = "Home Page";
}
@section featured {
<section class="featured">
<p>To learn more about ASP.NET MVC visit </p>
</section>
}
@{
Html.RenderAction("ShowNames", "Simple");
}
@{
ViewBag.Title=“主页”;
}
@特色栏目{
要了解有关ASP.NET MVC的更多信息,请访问
}
@{
RenderAction(“ShowNames”、“Simple”);
}
您的ShowNames()
方法将simpleModel
项的集合返回到视图中(如db.SimpleModels.ToList()
),但您的分部将模型声明为单个simpleModel
对象。这将引发异常,就像您尝试使用foreach
循环迭代单个对象一样
将局部视图模型声明更改为
@model List<MvcApplication1.Models.simpleModel>
您的模型可能为空,即它没有任何数据。 因此,您应该在foreachloop之前进行检查 @模型列表
@if(model != null)
{
<ul>
@foreach (var item in model)
{
<li>@item.Name</li>
}
</ul>
}
@if(model!=null)
{
@foreach(模型中的var项目)
{
- @项目名称
}
}
尝试将[ChildActionOnly]属性添加到ShowNames方法。当视图有一个实例模型MVCAPApplication1.Models.simpleModel时,您正在传递一个集合,List
,谢谢Stephen,我尝试了这个,但结果仍然是相同的异常。我的答案修复了代码可能引发的两个异常。如果您仍然有异常,这不是因为您显示的代码——我已经对它进行了测试(手动将一些simpleModel
对象添加到集合中),它工作正常。您需要显示堆栈跟踪(并删除该图像-这根本没有帮助),您还应该在部分视图的第一行上放置断点,以帮助缩小错误的原因。但它无法到达他们的目的地。它在索引页本身上引发异常。在@{Html.RenderAction(“ShowNames”,“Simple”);}感谢Stephen的回答。它真的帮助了我。模型有3个项目,它不是空的。
@if(model != null)
{
<ul>
@foreach (var item in model)
{
<li>@item.Name</li>
}
</ul>
}