2011-10-10 22 views
1

我目前使用mvc 3剃鬚刀打開一個網站,但有一點問題。我想創建一個包含提交表單和列表的視圖。 「添加產品」和「產品列表」應該在相同的視圖中。首先,我希望部分觀點能成爲解決方案,但無法弄清楚如何使其發揮作用。不知道如何將對象(產品)列表傳遞到局部視圖。 有人有如何解決我的問題的想法?列出並在同一視圖中提交。這怎麼可能?

回答

1

的MainView - 型號:

public MainViewModel{ 

     public IList<Product> AvailableProducts{ 
      get; set; 
     } 
     public IList<Product> SelectedProducts{ 
      get; set; 
     } 
} 

MAINVIEW:

@Html.RenderPartial("_SelectedProductsPartial", Model.SelectedProducts) 

管窺:

@model IList<Product> 

控制器:

public ActionResult MainView(){ 

MainViewModel model = new MainViewModel(); 
model.AvailableProducts = ...; 
model.SelectedProducts = ...; 

return View(model); 
+0

林有點不確定如何設置與控制器,模型和視圖。我應該使用標準ProductsController,模型和視圖嗎?在過去的幾天裏,只使用mvc,到目前爲止,我只習慣每個視圖的一個動作。如果我想創建一個產品,我在控制器中調用create方法並使用create view。我怎樣才能使用控制器中的創建和列表?我是否需要更換控制器或者是否應該使用全新的控制器來處理視圖?我仍然是mvc neewbie所以我害怕我需要更多的細節:) – Christian

+0

如果你使用RenderPartial你不需要一個控制器方法。 只需在控制器的MainView-methode中創建模型。 – Tobias

0

顯示部分

// In your action method 
IList<ProductViewModel> productListViewModel = new List<ProductViewModel>(); 
return PartialView(productListViewModel); 


//Your view model: 


@model IEnumerable<YourNamespace.WebUI.Models.ProductViewModel> 

@for(int i = 0; i < Model.Count(); i++){ 
    // Assuming your product has a name property 
    @Html.DisplayFor(model => model.Name); 
} 
1

局部模板不需要您正在試圖完成的任務,但他們可以保持您的關注分離很有幫助。

要回答你的問題,你可以通過它的第二個參數傳遞一個對象來一個強類型的局部視圖,就像這樣:

@Html.Partial("_MyPartialName", Model.ThingIWantToPass) 

在這個例子中,這將是一個強類型的局部的與Model.ThingIWantToPass相同的類型。

+0

如何在沒有部分視圖的情況下完成? – Christian