部分视图呈现无法在主页上呈现,抛出HttpExceptionn

时间:2015-05-07 04:37:05

标签: 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();               
    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");
}

3 个答案:

答案 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方法。