调用部分视图时Foreach不工作

时间:2017-03-29 14:44:58

标签: c# asp.net-mvc razor

在阅读this后,我转到了我的代码并将我的视图更改为部分使所有返回视图的返回视图返回部分视图。 然后我在一个页面中调用了我的局部视图,令人惊讶的是,当我调用我的局部视图时它会输出一个错误:“对象引用没有设置为对象的实例。” See this for details 事情是我的部分视图工作得很好,当我测试它只是在其他页面中使用时不加载。这有什么问题?

部分查看代码:

<div class="row">
    @Html.Partial("~/Views/Movies/Index.cshtml")
</div>

我如何在页面中调用局部视图:

Task

2 个答案:

答案 0 :(得分:2)

这是因为你还没有将模型对象传递给它,并且它会因为它将为null而失败,如果你在控制器中对这个局部视图有动作,我建议使用Html.Action或{ {1}}喜欢:

可能的解决方案1:

Html.RenderAction

如果您已经有<div class="row"> @Html.Action("Index","Movies") </div> 类,并且您将看到名为MoviesController的操作方法,Index将调用Html.Action("Index","Movies")类的Index方法并将呈现在浏览器中返回部分视图的html作为响应。

并且您的操作将包含从数据库获取电影的代码,并在部分视图中返回,如:

MoviesController

可能的解决方案2:

如果您在父视图的模型中有电影集合,则需要将其传递给部分视图,如:

public ActionResult Index()
{

   var movies = ...// call to db to get them

  return PartialView("~/Views/Movies/Index.cshtml",movies);
}

答案 1 :(得分:2)

看着你没有将模型传递到局部视图中。

你应该传递类似的东西:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

...
    let crashReporter = PLCrashReporter.shared()
    if (crashReporter?.hasPendingCrashReport())! {
        handleCrashReport()
    }

    var crashReporterCapture = PLCrashReporterCallbacks()
    crashReporterCapture.version = 0
    crashReporterCapture.context = nil
    let callback : PLCrashReporterPostCrashSignalCallback = { info, uap, ctx in
        handleCrashReport()
    }

    crashReporterCapture.handleSignal =  callback
    crashReporter?.setCrash(&crashReporterCapture)
    crashReporter?.enable()

其中model是

的实例
<div class="row">
    @Html.Partial("~/Views/Movies/Index.cshtml", model)
</div>