我如何创建一个 List<ViewModel> 以及另外 2 个 类 模型? MVC ASP.NET
How can I create a List<ViewModel> with 2 other classes of models? MVC ASP.NET
如何创建一个包含另外 2 个 类 模型的 List?
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 个模型(目标 ViewModel)
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
的方式 return 列出 ItemViewModel
。
如何创建一个包含另外 2 个 类 模型的 List
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 个模型(目标 ViewModel)
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
的方式 return 列出 ItemViewModel
。