2010-10-27 36 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