【发布时间】:2018-08-17 18:38:54
【问题描述】:
我正在尝试在 1 个视图中显示 2 组数据:
第一个 LINQ:
var result = from add in db.Addresses
join u in db.Users on add.UserID equals u.Id
where CurrUser == add.UserID
select new AddressViewModel
{
FirstAddressLine = add.FirstAddressLine,
SecondAddressLine = add.SecondAddressLine,
Town = add.Town,
PostCode = add.PostCode,
Distance = addDis
};
第二个 LINQ:
var result = from c in db.Carts
join s in db.Sweets on c.SweetID equals s.SweetID
where c.CartID == cartId
select new ShoppingCartViewModel
{
SweetName = s.SweetName,
Qty = c.Qty,
Price = s.Price,
SweetTotal = (s.Price * c.Qty),
Singular = s.Singular,
CartTotal = cartTotal
};
两种视图模型如下:
public class AddressViewModel
{
public string FirstAddressLine { get; set; }
public string SecondAddressLine { get; set; }
public string Town { get; set; }
public string County { get; set; }
public string PostCode { get; set; }
public decimal Distance { get; set; }
}
public class ShoppingCartViewModel
{
public decimal? CartTotal { get; set; }
public decimal? SweetTotal { get; set; }
public bool? Singular { get; set; }
public decimal? Price { get; set; }
public int? RecordID { get; set; }
public string CartID { get; set; }
public int? SweetID { get; set; }
public int? PemixID { get; set; }
public int? Qty { get; set; }
public System.DateTime? DateCreated { get; set; }
public string SweetName { get; set; }
}
但我不确定将 2 个视图模型返回到 1 个视图模型的最佳做法是什么?
编辑:如果我错过了明显的(仍在学习),但我不确定如何遵循您的答案,请道歉...我创建了购物车的部分视图:_ShoppingCartPartial,我已放置在共享视图文件夹中。
当我尝试在 Checkout 视图中呈现部分视图时,我收到了它所期望的错误 ShoppingCartViewModel,但我目前正在向它发送 AddressViewModel。
我已经制作了两者的视图模型:
public class CheckoutViewModel
{
public IEnumerable<Address> AVM { get; set; }
public IEnumerable<Cart> SCVM { get; set; }
}
问题是我不确定我应该将控制器(如下)更改为:
public ActionResult Index()
{
var CurrUser = User.Identity.GetUserId();
var addDis = getAddDis(CurrUser);
var result = from add in db.Addresses
join u in db.Users on add.UserID equals u.Id
where CurrUser == add.UserID
select new AddressViewModel
{
FirstAddressLine = add.FirstAddressLine,
SecondAddressLine = add.SecondAddressLine,
Town = add.Town,
PostCode = add.PostCode,
Distance = addDis
};
return View(result);
}
【问题讨论】:
-
你必须将两个 ViewModel 添加到另一个 ViewModel 中
-
使用 1 个视图和 2 个部分:1 个视图保存部分。您的数据的 2 个部分。将(具体)视图模型传递给每个 - @{ Html.RenderPartial("your view", your_model, ViewData);}
标签: c# asp.net-mvc entity-framework linq asp.net-mvc-viewmodel