Asp.net mvc PartialView呈现未在主页上呈现,引发HttpExceptionn

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();

我正在学习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>
}
@型号列表
@如果(型号!=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>
}