传递多个模型进行查看

eya*_*alb 3 asp.net-mvc-2

public ActionResult Index()
{ 
    var pr = db.products;
    return View(pr); 
}
Run Code Online (Sandbox Code Playgroud)

首先 - 我想传递更多数据 - 例如:

public ActionResult Index()
{ 
    var pr = db.products;
    var lr = db.linksforproducts(2)
    return View(pr,lr); 
}
Run Code Online (Sandbox Code Playgroud)

如何读取lr视图中的数据?

其次 - 在视图中我有一个产品表,我想在表中添加一个包含此产品所有标签的列.如何获取每种产品的标签?

现在我创建这个代码

public class catnewModel
{

    public IQueryable<category> dl { get; set;   }
    public IQueryable<product> dr { get; set;   }
}
Run Code Online (Sandbox Code Playgroud)

和我的控制器

public ActionResult Index()
    {

        var pr = db.products;
        var pl = db.categories;

        catnewModel model = new catnewModel();
        model.dr = pr;
        model.dl = pl;

        return View(model);
    }
Run Code Online (Sandbox Code Playgroud)

在我看来,我试图迭代

 <% foreach (var item in Model.dr)  %>
Run Code Online (Sandbox Code Playgroud)

但我得到错误

error CS1061: 'System.Collections.Generic.IEnumerable<amief.Models.catnewModel>' does not contain a definition for 'dr' and no extension method 
Run Code Online (Sandbox Code Playgroud)

jim*_*ode 9

我通过制作特定于您需要信息的视图的ViewModel来完成此操作.

然后在该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); 
}
Run Code Online (Sandbox Code Playgroud)