【发布时间】:2016-02-07 17:34:54
【问题描述】:
实际上,在我的情况下它不是两个视图模型,只有一个,但我试图传递一个产品值,然后下面的产品列表是我的控制器,以便您更好地理解
public ActionResult Filter(long? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
//select a single product
ProductViewModel products = new ProductViewModel();
var pro = db.Products.Find(id);
if (pro != null)
{
products.ProductId = pro.ProductId;
products.ProductName = pro.ProductName;
products.AddDate = pro.AddDate;
products.ApplicationUserId = pro.ApplicationUserId;
products.ProductDescription = pro.ProductDescription;
products.ProductPictures = db.ProductPictures.Where(m => m.ProductId == id).ToList();
}
//Now creating list
ProductViewModel product = new ProductViewModel();
var pictures = db.ProductPictures;
var model = db.Products.Where(p=>p.ApplicationUserId==User.Identity.GetUserId()).Select(p => new ProductViewModel
{
ProductId = p.ProductId,
ProductName = p.ProductName,
ProductDescription = p.ProductDescription,
ProductPictures = pictures.Where(x => x.ProductId == p.ProductId),
Category = p.Category,
AddDate = p.AddDate,
ApplicationUserId = p.ApplicationUserId,
});
return View(model);
}
但是我如何将这两个值传递给我尝试将单个产品的 viewbag 作为视图的视图
ViewBag.ProductId = pro.ProductId;
ViewBag.ProductName = pro.ProductName;
ViewBag.AddDate = pro.AddDate;
ViewBag.ApplicationUserId = pro.ApplicationUserId;
ViewBag.ProductDescription = pro.ProductDescription;
ViewBag.ProductPictures = db.ProductPictures.Where(m => m.ProductId == id).ToList();
ViewBag.idd = pro.ProductId;
但不知道如何在 razor 视图中获取列表 Viewbag.productpicture 的值。是使用viewbag传递价值的好方法还是有其他方法??
【问题讨论】:
-
创建一个具有 2 个属性
ProductViewModel Product和IEnumerable<ProductViewModel> ProductList的视图模型并将其返回给视图 -
再次感谢斯蒂芬,将其发布在答案中,以便我将其标记为答案。
-
已添加答案以解决该问题,但您的代码表明您可能想要编辑一个
Product并且在同一页面上还显示所有Product的列表,在这种情况下可能不会成为最好的解决方案。 -
不,我不会编辑,而是选择产品并创建一个组合包.....进行编辑我认为部分视图将是最好的解决方案,对吧??
-
OK(不确定您要达到的目的)对于编辑视图,您只需要返回一个
ProductViewModel
标签: asp.net-mvc list razor asp.net-mvc-viewmodel