2014-11-24 24 views
0

在我控制我設置在ViewBag項目:如何使用列表設置選定的模型?

List<ShopItemModel> items = new List<ShopItemModel>(); 
/* populate my items */ 
ViewBag.Items = items; 

所以在我運行直通列表中CSHTML,但我怎麼這麼將它連接在回發將在控制器Post方法的參數?

的CSHTML:

@model Models.ShopItemModel 

<h2>Webshop</h2> 

@foreach(var item in ViewBag.Items) 
{ 
    using (Html.BeginForm()) 
    { 
     <p>@item.Name</p> <!-- List the item name, but not bounded? --> 

     @Html.LabelFor(model => model.Name, new { Name = item.Name }) <!-- outputs just "Name", not the items name --> 

     <input type="submit" value="Buy" /> 
    } 
} 

POST版本的方法的控制器:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(ShopItemModel m) 
{ 
    return View(); 
} 

但我怎麼解決這個綁定?所以我從列表中獲取所選項目?

+0

您想要做什麼?您沒有爲表單中的模型屬性渲染任何控件(輸入,選擇,textarea),因此沒有任何回傳。你選擇的項目是什麼意思?你如何選擇一個項目? – 2014-11-24 21:05:55

回答

0

在你看來:

using (Html.BeginForm()) 
{ 
    for (int i = 0; i < Model.Count; i++) 
    { 
     @Html.LabelFor(model => model[i].Name) 
    } 
} 

這將產生HTML控件是這樣的:

<input name="ShopItemModel[3].Name" ... 

如果您在使用本的形式,在你的控制器,遍歷張貼的模型數據:

foreach (var item in model) 
{ 
    ... do something to each item 
} 

可以使用foreach在視圖中循環而不是for循環,示例here

相關問題