MVC视图 - 无法访问从控制器传递到View的变量

时间:2013-06-10 17:56:07

标签: asp.net-mvc razor viewmodel

我一直在看第三个代码块in this answer的示例,而ViewModel的成员正在通过model.Member访问,但我从来没有能够在任何地方使用小写model我的观点。

我了解如何在MVC Razor Views中使用@model指令和Model属性。我不明白的是当我的代码几乎与我在问题的第一行中链接的示例相同时,如何从视图中访问model.ChartItems

如果有人能够澄清MVC Razor视图中model.MemberModel.Member之间的区别,我将不胜感激。我似乎需要弄清楚如何访问model.Member,如本问题顶部的链接所示,但我似乎无法找到有关此问题的任何详细说明。

以下是我尝试访问model的视图的代码:

@model Models.StudentHistoryModel

<h2>Student History</h2>

@Html.RenderPartial("_Course", model.CourseCompletion);
@Html.RenderPartial("_Track", model.TrackCompletion);
@Html.RenderPartial("_Certification", model.CertificationCompletion);

以下是将数据传递给视图的Controller操作:

public ActionResult History(int id)
{
    var history = new StudentHistoryModel();

    history.CourseCompletion = db.CourseCompletions
        .Where(c => c.StudentID == id)
        .ToList();

    history.TrackCompletion = db.TrackCompletions
        .Where(c => c.StudentID == id)
        .ToList();

    history.CertificationCompletion = db.CertificationCompletions
        .Where(c => c.StudentID == id)
        .ToList();

    return PartialView("_History", history);
}

不,在您提出要求之前,无法从视图中访问变量history

2 个答案:

答案 0 :(得分:2)

经过多次令人沮丧的故障排除后,我决定尝试一些开箱即用的东西......我重新启动了Visual Studio。在那之后,我能够像这样访问我的成员:

@Html.RenderPartial("_Course", Model.CourseCompletion);

然而,这提出了一个新问题。我在整条线路上收到了这个错误:

Cannot implicitly convert type 'void' to 'object'

我意识到该语句试图返回一个值,所以我用大括号括起来,就像这样:

@{Html.RenderPartial("_Course", Model.CourseCompletion);}

瞧。问题解决,数据可访问,模型工作。我大吃一惊。

答案 1 :(得分:0)

试试这个:

@model Models.StudentHistoryModel

<h2>Student History</h2>

@Html.RenderPartial("_Course", Model.CourseCompletion);
@Html.RenderPartial("_Track", Model.TrackCompletion);
@Html.RenderPartial("_Certification", Model.CertificationCompletion);

请注意使用Model,而不是不存在的model变量名。

相关问题