如何创建包含其他 2 类模型的列表<视图模型>?MVC ASP.NET
本文关键字:模型 列表 视图 NET ASP MVC 何创建 创建 其他 包含 | 更新日期: 2023-09-27 18:36:15
如何创建一个列表<视图模型> 与其他 2 类模型?视图模型>
1 型号:
public class Item
{
public int ItemId { get; set; }
public string Code { get; set; }
public int QuantityInBase { get; set; }
public bool IsHidden { get; set; }
}
2 型号:
public class JsonViewModel
{
public List<JsonItem> Items { get; set; }
}
public class JsonItem
{
public string Name { get; set; }
public string Code { get; set; }
public double Price { get; set; }
}
正如你在上面看到的 - 两个类都有属性代码 - 它是连接器。
3 模型(目标视图模型)
public class ItemViewModel
{
public int ItemId { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public int QuantityInBase { get; set; }
public decimal Price { get; set; }
public bool IsHidden { get; set; }
}
public class ItemListViewModel
{
public List<ItemViewModel> ItemViewList;
}
这就是我已经尝试在控制器中做的事情。
public ActionResult ItemsListPartial(JsonViewModel webSocketData)
//webSocketData has values from webservice
{
ItemListViewModel model = new ItemListViewModel();
var data = db.Items.ToList();
foreach (var obj in data)
{
model.ItemViewList = ...
// here, somehow i have to merge !var data! with
// !webSocketData! = and it has to be one
// list of ItemListViewModel
}
return View("_ItemsListPartial", model);
}
很难解释。我希望你明白我的意思。
如果我理解正确,您可以对code
属性创建linq join
查询。像这样:
var rez= (from p in data
join q in webSocketData.Items on p.Code equals q.Code
select new ItemViewModel
{
ItemId = p.ItemId,
Code = p.Code,
Name = q.Name,
QuantityInBase = p.QuantityInBase ,
Price = q.Price,
IsHidden = p.IsHidden
}).ToList();
这将以leftOuterJoin
的方式返回ItemViewModel
列表。