我正在学习MVC而我正在尝试在主页上呈现部分视图。 我收到了以下错误:
" HttpException"
我非常简单的模型如下:
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>
}
我希望部分视图呈现的主页是
@{
ViewBag.Title = "Home Page";
}
@section featured {
<section class="featured">
<p>To learn more about ASP.NET MVC visit </p>
</section>
}
@{
Html.RenderAction("ShowNames", "Simple");
}
答案 0 :(得分:0)
您的ShowNames()
方法会向视图返回simpleModel
项的集合(如db.SimpleModels.ToList()
中所述),但您的部分将模型声明为单个simpleModel
项目。这将抛出异常,就像您尝试使用foreach
循环迭代单个对象一样。
将局部视图模型声明更改为
@model List<MvcApplication1.Models.simpleModel>
但由于<li>name</li>
只返回文本“name”(或假设其实际为<li>@name</li>
,因此它将返回文本“MvcApplication1.Models.simpleModel”,除非您已覆盖{{1} } ToString()
}的方法,因此您需要访问对象的属性
simpleModel
答案 1 :(得分:0)
您的模型可能为空,即没有任何数据。 所以,你应该在foreachloop之前检查一下
@model List
@if(model != null)
{
<ul>
@foreach (var item in model)
{
<li>@item.Name</li>
}
</ul>
}
答案 2 :(得分:0)
尝试将[ChildActionOnly]属性添加到ShowNames方法。