C# 调用局部视图时Foreach不工作
阅读之后,我转到我的代码,将我的视图更改为partial,将所有返回视图的返回改为返回partial视图。 然后我在一个页面中调用了我的部分视图,当我调用我的部分视图时,它输出了一个错误:“对象引用未设置为对象的实例” 问题是,我的部分视图在测试时工作正常,但在另一个页面中使用时它不会加载。这里有什么问题 部分视图代码:C# 调用局部视图时Foreach不工作,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,阅读之后,我转到我的代码,将我的视图更改为partial,将所有返回视图的返回改为返回partial视图。 然后我在一个页面中调用了我的部分视图,当我调用我的部分视图时,它输出了一个错误:“对象引用未设置为对象的实例” 问题是,我的部分视图在测试时工作正常,但在另一个页面中使用时它不会加载。这里有什么问题 部分视图代码: @model IEnumerable<MvcMovieClean.Models.MovieClean> <h2>Index</h2> &
@model IEnumerable<MvcMovieClean.Models.MovieClean>
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<div class="album">
<div class="container">
<div class="row">
@foreach (var item in Model)
{
<div class="card">
<img alt="100%x280" src="@Html.DisplayFor(modelItem => item.ImgURL)"/>
<p class="card-text">@Html.DisplayFor(modelItem => item.Plot)</p>
</div>
}
</div>
</div>
</div>
@model IEnumerable
指数
@ActionLink(“新建”、“创建”)
@foreach(模型中的var项目)
{
item.ImgURL)“/>
@Html.DisplayFor(modelItem=>item.Plot)
}
我如何调用页面中的部分视图:
<div class="row">
@Html.Partial("~/Views/Movies/Index.cshtml")
</div>
@Html.Partial(“~/Views/Movies/Index.cshtml”)
这是因为您尚未将模型对象传递给它,它当然会失败,因为它将为空,如果您在控制器中对此部分视图执行操作,我建议使用Html.action
或Html.RenderAction
调用它,如:
可能的解决办法1:
可能的解决办法2:
当然,如果在父视图的模型中有movies集合,则需要将其传递到局部视图,如:
public ActionResult Index()
{
var movies = ...// call to db to get them
return PartialView("~/Views/Movies/Index.cshtml",movies);
}
<div class="row">
@Html.Partial("~/Views/Movies/Index.cshtml",Model.Movies)
</div>
@Html.Partial(“~/Views/Movies/Index.cshtml”,Model.Movies)
这是因为您尚未将模型对象传递给它,它当然会失败,因为它将为空,如果您在控制器中对此部分视图执行操作,我建议使用Html.action
或Html.RenderAction
调用它,如:
可能的解决办法1:
可能的解决办法2:
当然,如果在父视图的模型中有movies集合,则需要将其传递到局部视图,如:
public ActionResult Index()
{
var movies = ...// call to db to get them
return PartialView("~/Views/Movies/Index.cshtml",movies);
}
<div class="row">
@Html.Partial("~/Views/Movies/Index.cshtml",Model.Movies)
</div>
@Html.Partial(“~/Views/Movies/Index.cshtml”,Model.Movies)
查看您没有将模型传递到局部视图
您应该传入类似以下内容的内容:
<div class="row">
@Html.Partial("~/Views/Movies/Index.cshtml", model)
</div>
@Html.Partial(“~/Views/Movies/Index.cshtml”,model)
其中model是的一个实例
IEnumerable<MvcMovieClean.Models.MovieClean>
IEnumerable
查看您没有将模型传递到局部视图
您应该传入类似以下内容的内容:
<div class="row">
@Html.Partial("~/Views/Movies/Index.cshtml", model)
</div>
@Html.Partial(“~/Views/Movies/Index.cshtml”,model)
其中model是的一个实例
IEnumerable<MvcMovieClean.Models.MovieClean>
IEnumerable
很抱歉缺乏知识,但在您的最后一段代码中,我似乎无法使用Model.Movies。我做错了什么吗?正如我所说的,如果您的父视图模型中有Movies
属性,那么您可以使用此方法,其他方法可以使用Html.Action
或Html.RenderAction
谢谢很好,我能问一下@Html.Action(“Index”,“Movies”)到底是什么吗?我知道这个动作是什么,但是“Index”和“Movies”从哪里来?在控制器中,您有moviesconner
类,您将看到一个名为Index
,Html.Action(“Index”,“Movies”)的动作方法
将调用Movies controller的Index方法,并将返回的部分视图html作为浏览器中的响应。很抱歉,在您的最后一段代码中,我似乎无法使用Model.Movies。我是否做错了什么?正如我所说,如果您的父视图模型中有Movies
属性,我将在这种情况下,你可以使用这种方法,其他方法使用Html.Action
或Html.RenderAction
谢谢!非常好用,我能问一下@Html.Action(“Index”,“Movies”)到底是什么吗?我知道这个动作是什么,但是“Index”和“Movies”在哪里呢“来自”?在控制器中,您有MoviesController
类,在该类中,您将看到名为Index
,Html.action(“Index”,“Movies”)的操作方法
将调用Movies controller的Index方法,并将返回的部分视图html作为响应呈现在browser@modelIEnumerable这是实例化的正确方法吗?是的,但是如果你的模型更复杂,你会把IEnumerable作为一个属性,以及你的偏微分方程所需要的任何其他属性view@modelIEnumerable这是实例化的正确方法吗?是的,但是如果你的模型更复杂,你会把IEnumerable作为一个属性,以及你的局部视图所需要的任何其他属性