代码之家  ›  专栏  ›  技术社区  ›  smned

在Razor中显示ViewModel数据列表

  •  1
  • smned  · 技术社区  · 6 年前

    我有一个viewModel列表,其中还包含其他模型的列表。我正在处理一个预建的数据库,我不能改变它的结构。我很难用Razor显示ViewModel数据。

    MyBigViewModel定义

    public class MyBigViewModel
        {
            public List<FirstModel> FirstModel { get; set; }
            public List<SecondModel> SecondModel { get; set; }
            public List<ThirdModel> ThirdModel { get; set; }
            public List<FourthModel> FourthModel { get; set; }
            public List<FifthModel> FifthModel { get; set; }
    
        }
    

    我有一些内部逻辑,基于一个查询(基于单个模型),我将尝试填充视图模型。

    List<MyBigViewModel> BigViewModel = new List<MyBigViewModel>();
        foreach (var SingleModel  in FirstModelList)
         {
            SecondModelResult = db.somequery;
            ThirdModelResult = db.somequery;
            FourthModelResult = db.somequery;
            FifthModelResult = db.somequery;
    
            MyBigViewModel TempViewModel = new MyBigViewModel{
                FirstModel  = FirstModelResult;
                SecondModel = SecondModelResult;
                ThirdModel  = ThirdModelResult;
                FourthModel = FourthModelResult;
                FifthModel  = FifthModelResult;
            }
            BigViewModel.Add(TempViewModel);
    
          }
    

    结果集 BigViewModel 正是我想要它的结构方式,但我无法在Razor中为每个人显示数据。当我尝试使用 @foreach (var item in Model) @Html.DisplayFor(modelItem => item.FirstModel.Name) 无法访问我想要的数据。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Maarten B    6 年前

    尝试 @foreach (var item in Model.FirstModel) 对于循环 然后 @Html.DisplayFor(item => item.Name)

    您需要这样做,因为您需要迭代每个模型列表,而不是迭代bigviewModel的单个实例。