【问题标题】:MVC ViewModel - Multiple modelsMVC ViewModel - 多个模型
【发布时间】:2017-07-13 23:03:37
【问题描述】:

MVC 新手,希望将两个模型传递给视图。一个想法是数据列表,另一个只是一个datetime,用于显示上次批量上传的时间。

我的模型是:

public class DataModel
{
    public int IDX { get; set; }
    public string PyR { get; set; }
    public string CN { get; set; }
    public string A { get; set; }
    public string B_R { get; set; }
    public DateTime L_I { get; set; }
}

public class DataUpdated
{
    public DateTime LastImport { get; set; }
}

我的视图模型是:

public class DataViewModel
{
    public IEnumerable<Model.DataModel> Data { get; set; }
    public Model.DataUpdated LastUploadDate { get; set; }
}

我将视图模型发送到控制器中的视图:

ViewModels.DataViewModel vm = new ViewModels.DataViewModel();
vm.Data = C_List;
vm.LastUploadDate = du;
return View(vm);

然后,我尝试在我的观点中引用它:

@model CCA_Data.ViewModels.DataViewModel

但是当我尝试在我的视图中的以下代码行中从视图模型访问数据模型时:

 @foreach (var Data in Model.Data)

我得到错误:

IEnumerable 不包含对 数据

2 个问题:

  1. 我做错了什么?
  2. 为什么它认为DataViewModelIENumerable

【问题讨论】:

  • 如何将这个 ViewModel 从控制器发送到视图?
  • 你的变量名很糟糕。你应该养成给他们起有意义名字的习惯。
  • @Leonidas199x 您是否尝试过重建您的项目/重新启动您的视觉工作室?您的代码似乎运行良好。
  • 在这里更改:ViewModels.DataViewModel vm = new ViewModels.DataViewModel(); vm.Data =新数据(); vm.Data = C_List; vm.LastUploadDate = 杜;并检查您是否在 vm 中获取数据或不对其进行调试。
  • @Leonidas199x 有时即使没有理由也有必要。在这里查看stackoverflow.com/a/36655884/2946329

标签: c# asp.net-mvc


【解决方案1】:

只是在这里回答,这样其他人就不必经过所有的cmets...

不要忘记重建项目,以便它可以找出所有的命名空间和引用。

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 2016-03-09
    • 2014-03-14
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多