【问题标题】:MVC Views - Can't access variable passed from controller to ViewMVC 视图 - 无法访问从控制器传递到视图的变量
【发布时间】:2013-06-10 17:56:06
【问题描述】:

我已经看到像第三个代码块 in this answer 这样的例子,而 ViewModel 的成员是通过 model.Member 访问的,但是我从来没有能够在我的任何视图中使用小写的 model

我了解如何在 MVC Razor 视图中使用 @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);

这是将数据传递给视图的控制器操作:

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 不能从视图中访问。

【问题讨论】:

    标签: asp.net-mvc razor viewmodel


    【解决方案1】:

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

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

    但是,这带来了一个新问题。我在整行上都收到了这个错误:

    Cannot implicitly convert type 'void' to 'object'
    

    我意识到该语句试图返回一个值,所以我将它用大括号括起来,如下所示:

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

    瞧。问题已解决,数据可访问,模型正常工作。我惊呆了。

    【讨论】:

    • 视图中的 IntelliSense 总是有点松懈。
    【解决方案2】:

    试试这个:

    @model Models.StudentHistoryModel
    
    <h2>Student History</h2>
    
    @Html.RenderPartial("_Course", Model.CourseCompletion);
    @Html.RenderPartial("_Track", Model.TrackCompletion);
    @Html.RenderPartial("_Certification", Model.CertificationCompletion);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-10
      • 2017-05-14
      • 2013-04-07
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多