2010-10-27 60 views
3
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

我不明白你的第二个问题,请详细说明。 – jimplode 2010-10-27 08:23:43

+0

我的视图显示产品列表。 我想运行时从每个产品的数据库数据(图像,标签...),我需要使用usercontrol并传递给他的产品ID? – eyalb 2010-10-27 08:41:30

+0

在您的视图中,只需使用代码块<% %>即可浏览您的产品,并将您的标记粘贴在您想要显示的位上。 – jimplode 2010-10-27 09:42:03

回答

9

我已让视图模型具体到您所需要的信息的视图做到了这一点。

然后该视图模型中只具有属性,以容纳您的其他车型。

事情是这样的:

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); 
} 
+0

哪里可以放置ViewModel类? 我需要把它放在models文件夹中? – eyalb 2010-10-27 08:38:33

+0

我从viewmodels分离模型。您的模型应该代表系统,人员,汽车,产品等中的事物以及业务逻辑和验证逻辑。您的viewmodel是特定于该视图的特定模型,因此我将其保存在名为ViewModels的文件夹中。 – jimplode 2010-10-27 08:43:17

+0

在视图中我试图去model.Products,但我得到一个错误。 – eyalb 2010-10-27 09:31:47

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); 
} 
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); 
} 
+0

这是对这个问题的正确/简单/优雅的答案。 – D3vtr0n 2013-04-16 10:08:52