2012-03-13 34 views
1

我在我的視圖中有12個複選框,當我選擇一些項目並按下提交按鈕時,formcollection只有兩個鍵[0]「IsSelected」和[1]「播放列表」。MVC 3 - 爲什麼我沒有獲取FormCollection中的複選框值?

這是我的看法。它不是強類型模型,而是局部視圖。

@using (Html.BeginForm()) { 
<p>Tracks</p> 
    foreach (Sem_App.Models.Track track in ViewBag.Tracks) 
    { 
     @Html.CheckBoxFor(m => track.IsSelected) 
     @track.Title 
    } 
      @Html.DropDownList("Playlists", String.Empty) 
      <input type="submit" value="Add To Playlist" /> 
} 

控制器

[HttpPost] 
    public ActionResult Search(String criteria, FormCollection collection) 
    { 

    } 

有沒有什麼辦法可以解決呢?還是有更好的方式將更新的ViewBag.Tracks列表傳遞給控制器​​?因爲我有一個bool每個軌跡的IsSelected字段

回答

3

複選框表單項需要使用唯一的名稱/ id屬性作爲POST ActionResult中的列表正確顯示。大多數我見過使用索引屬性來指定輸入元素,像這樣的名字的例子:如果我能

[HttpPost] 
public ActionResult Search(String criteria, string PlayLists, List<Track> tracks) 
{ 

} 
+0

+100:

@using (Html.BeginForm()) { <p>Tracks</p> int index = 0; foreach (Stackoverflow.Controllers.Track track in ViewBag.Tracks) { @Html.CheckBox("tracks[" + index + "].IsSelected", track.IsSelected) @Html.Hidden("tracks[" + index + "].Title", track.Title) @track.Title index++; } @Html.DropDownList("Playlists", String.Empty) <input type="submit" value="Add To Playlist" /> } 

然後,它會來通過對POST方法是這樣!完美無缺地工作。謝謝 – user972616 2012-03-13 09:17:04

相關問題