从返回该部分视图的操作控制器将ViewBag传递给部分视图

时间:2014-06-18 19:42:25

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-partialview

我有一个动作控制器,它返回带有查询的局部视图。在这个控制器中,我有一个带有另一个查询的viewbag,我想传递给局部视图,所以我可以在foreach中使用它。

这是我的代码:

public ActionResult GetQuizResults(string ProfileResult, short occupationID)

        var query = from o in db.Occupations
                    where o.Profile.Equals(ProfileResult, StringComparison.InvariantCulture)
                    select new QuestionnaireViewModel
                    {
                        OccupationID = o.OccupationID,
                        OccupationName = o.OccupationName,
                        OccupationDescription = o.OccupationDescription
                    };

        QuestionnaireViewModel occDetails = new QuestionnaireViewModel();
        ViewBag.OccDetails = occDetails.GetOccupationDetails(occupationID);

        return PartialView("_QuizResults", query.ToList());
    }

如何将ViewBag.OccDetails传递给_QuizResults局部视图?

在我的部分视图中,我有:

@model IEnumerable<Proj.Models.QuestionnaireViewModel>

            @foreach (var item in ViewBag.OccDetails)
            {
                @item.OccupationDescriptionOc

            }

但我收到错误:&#34;对象引用没有设置为对象的实例&#34;

2 个答案:

答案 0 :(得分:1)

您不需要发送ViewBag,只需使用这种方式即可完成所有操作......

例如:

@foreach (var item in (IEnumerable<OccupationDetails>)ViewBag.OccDetails)
{
}

答案 1 :(得分:0)

您的_QuizResults部分视图是什么样的?您应该可以使用以下命令直接在视图中访问它:

@ViewBag.OccDetails