public ActionResult Index()
{
var pr = db.products;
return View(pr);
}
首先 - 我想传递更多数据 - 例如:
public ActionResult Index()
{
var pr = db.products;
var lr = db.linksforproducts(2)
return View(pr,lr);
}
如何阅读视图中的lr
数据?
其次 - 在视图中我有一个产品表,我想在表中添加一个包含此产品所有标签的列。如何获取每种产品的标签?
现在我创建了这段代码
public class catnewModel
{
public IQueryable<category> dl { get; set; }
public IQueryable<product> dr { get; set; }
}
和我的控制器
public ActionResult Index()
{
var pr = db.products;
var pl = db.categories;
catnewModel model = new catnewModel();
model.dr = pr;
model.dl = pl;
return View(model);
}
在我看来,我试图迭代
<% foreach (var item in Model.dr) %>
但是我的错误
error CS1061: 'System.Collections.Generic.IEnumerable<amief.Models.catnewModel>' does not contain a definition for 'dr' and no extension method
答案 0 :(得分:9)
我通过制作一个特定于您需要信息的视图的ViewMode来完成此操作。
然后在该ViewModel中只有属性来容纳其他模型。
这样的事情:
public class ViewModel
{
public List<ProductModel> Products(){get; set;}
public List<LinksForProductModel> LinksForProducts(){get; set;}
}
public ActionResult Index()
{
var pr = db.products;
var lr = db.linksforproducts(2)
ViewModel model = new ViewModel();
model.Products = pr;
model.LinksForProducts = lr;
return View(model);
}
答案 1 :(得分:4)
创建包含两个属性的视图模型:
public class MyViewModel
{
public IEnumerable<Product> Products { get; set; }
public IEnumerable<LinkProduct> Links { get; set; }
}
在你的控制器中:
public ActionResult Index()
{
var model = new MyViewModel
{
Products = db.products,
Links = db.linksforproducts(2)
};
return View(model);
}
答案 2 :(得分:2)
通常 - 您为每个视图创建视图模型。
在你的情况下,那将是:
public class IndexModel{
public ProductModel[] Products{get;set;}
public LinkForProduct[] Links{get;set;}
}
public ActionResult Index(){
var model=new IndexModel{
Products=Map(db.products),
Links=Map(db.linksforproducts(2)};
return View(model);
}