局部视图渲染不在主页上渲染,抛出 HttpException
PartialView rendering not rendering on home page, throwing HttpExceptionn
我正在学习 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");
}
您的 ShowNames()
方法 return 是视图的 simpleModel
项的集合(如 db.SimpleModels.ToList()
中所示)但是您的部分将模型声明为单个 simpleModel
对象。那会抛出异常,就像您尝试使用 foreach
循环迭代单个对象一样。
将部分视图模型声明更改为
@model List<MvcApplication1.Models.simpleModel>
但由于 <li>name</li>
只会 return 文本 "name"(或者假设它实际上是 <li>@name</li>
那么它会 return 文本 "MvcApplication1.Models.simpleModel"除非你覆盖了simpleModel
的ToString()
方法,所以你需要访问一个属性对象
<ul>
@foreach (var item in model)
{
<li>@item.Name</li>
}
</ul>
您的模型可能为空,即它没有任何数据。
因此,您应该在 foreachloop
之前进行检查
@model 列表
@if(model != null)
{
<ul>
@foreach (var item in model)
{
<li>@item.Name</li>
}
</ul>
}
尝试将 [ChildActionOnly] 属性添加到您的 ShowNames 方法。
我正在学习 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");
}
您的 ShowNames()
方法 return 是视图的 simpleModel
项的集合(如 db.SimpleModels.ToList()
中所示)但是您的部分将模型声明为单个 simpleModel
对象。那会抛出异常,就像您尝试使用 foreach
循环迭代单个对象一样。
将部分视图模型声明更改为
@model List<MvcApplication1.Models.simpleModel>
但由于 <li>name</li>
只会 return 文本 "name"(或者假设它实际上是 <li>@name</li>
那么它会 return 文本 "MvcApplication1.Models.simpleModel"除非你覆盖了simpleModel
的ToString()
方法,所以你需要访问一个属性对象
<ul>
@foreach (var item in model)
{
<li>@item.Name</li>
}
</ul>
您的模型可能为空,即它没有任何数据。 因此,您应该在 foreachloop
之前进行检查@model 列表
@if(model != null)
{
<ul>
@foreach (var item in model)
{
<li>@item.Name</li>
}
</ul>
}
尝试将 [ChildActionOnly] 属性添加到您的 ShowNames 方法。