C# 调用局部视图时Foreach不工作

C# 调用局部视图时Foreach不工作,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,阅读之后,我转到我的代码,将我的视图更改为partial,将所有返回视图的返回改为返回partial视图。 然后我在一个页面中调用了我的部分视图,当我调用我的部分视图时,它输出了一个错误:“对象引用未设置为对象的实例” 问题是,我的部分视图在测试时工作正常,但在另一个页面中使用时它不会加载。这里有什么问题 部分视图代码: @model IEnumerable<MvcMovieClean.Models.MovieClean> <h2>Index</h2> &

阅读之后,我转到我的代码,将我的视图更改为partial,将所有返回视图的返回改为返回partial视图。 然后我在一个页面中调用了我的部分视图,当我调用我的部分视图时,它输出了一个错误:“对象引用未设置为对象的实例” 问题是,我的部分视图在测试时工作正常,但在另一个页面中使用时它不会加载。这里有什么问题

部分视图代码:

@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作为一个属性,以及你的局部视图所需要的任何其他属性