【问题标题】:MVC 3 - Why am I not getting checkbox values in FormCollection?MVC 3 - 为什么我没有在 FormCollection 中获得复选框值?
【发布时间】:2012-03-13 00:23:36
【问题描述】:

我的视图中有 12 个复选框,当我选择一些项目并按下提交按钮时,表单集合只有两个键 [0]“IsSelected”和 [1]“播放列表”。

这是我的观点。它不是模型的强类型,它是一个局部视图。

@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 列表传递给控制器​​?因为我为每个轨道都有一个布尔 IsSelected 字段

【问题讨论】:

    标签: asp.net-mvc-3 checkbox checkboxfor


    【解决方案1】:

    复选框表单项需要唯一的名称/ID 属性才能正确通过 POST ActionResult 中的列表。我见过的大多数示例都使用索引属性来分配输入元素的名称,如下所示:

    @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 方法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-22
      • 2012-06-10
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      相关资源
      最近更新 更多