Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC 3-在控制器中,如何检查视图中选择了哪些项目?_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc MVC 3-在控制器中,如何检查视图中选择了哪些项目?

Asp.net mvc MVC 3-在控制器中,如何检查视图中选择了哪些项目?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我有3个型号的专辑,其中有曲目实例,播放列表中也有曲目实例 目前,我的唱片集视图显示每个曲目,底部有一个复选框和一个下拉列表,其中显示了用户的播放列表和“添加到播放列表”按钮。因此,用户应该能够从相册中选择曲目,并将其添加到已有的播放列表中。但我不确定我的控制器会是什么样子来处理这个问题。我的看法是 **Album View** @{ ViewBag.Title = "Details"; } <h2>Album: @Model.Title</h2> @{

我有3个型号的专辑,其中有曲目实例,播放列表中也有曲目实例

目前,我的唱片集视图显示每个曲目,底部有一个复选框和一个下拉列表,其中显示了用户的播放列表和“添加到播放列表”按钮。因此,用户应该能够从相册中选择曲目,并将其添加到已有的播放列表中。但我不确定我的控制器会是什么样子来处理这个问题。我的看法是

**Album View**
@{
    ViewBag.Title = "Details";
}

<h2>Album: @Model.Title</h2>

@{

    List<Sem_App.Models.Playlist> abc = ViewBag.Playlists;

    IEnumerable<SelectListItem> selectList =
    from c in abc
    select new SelectListItem
    {
        Text = c.PlaylistName,
        Value = c.PlaylistName,
    };
}

@using (Html.BeginForm()){
    foreach (var track in Model.Tracks)
    {
        @Html.CheckBox(track.Title)
        @track.Title
        <br />
    }

    @Html.DropDownList("abd", selectList)

    <input type="submit" value="Add selected songs to playlist" />
}

如何检查用户在控制器中选择了哪些曲目以及选择了哪些播放列表?

我假设相册视图的模型类似于
@model album

你的模型是:

class Track
{ 
 ....
 ....
 bool IsSelected;
}
然后你的观点是:

 @using (Html.BeginForm()){
      for (int i = 0; i < Model.Tracks.Count(); i++) { 
       @Html.CheckBoxFor(m => m.Tracks[i].IsSelected)
       @Model.Tracks[i].Name
     }
    }
您的视图需要如下所示,以便正确呈现html,并将值正确绑定到控制器


您还需要使用强类型方法(以for结尾)将其他值绑定回控制器。您可能想使用
@Html.HiddenFor(m=>m.Id)
为相册创建一个隐藏字段,以便知道哪个相册被发回。

我假设相册视图的模型类似于
@model-album

你的模型是:

class Track
{ 
 ....
 ....
 bool IsSelected;
}
然后你的观点是:

 @using (Html.BeginForm()){
      for (int i = 0; i < Model.Tracks.Count(); i++) { 
       @Html.CheckBoxFor(m => m.Tracks[i].IsSelected)
       @Model.Tracks[i].Name
     }
    }
您的视图需要如下所示,以便正确呈现html,并将值正确绑定到控制器


您还需要使用强类型方法(以for结尾)将其他值绑定回控制器。您可能想使用
@Html.HiddenFor(m=>m.Id)
为相册创建一个隐藏字段,以便知道哪个相册被发回。

未选中的项目将不会提交。因此,您只能在实际操作中获取检查项。您应该将主键值设置为复选框值,而不是使用IsSelected属性。像这样
@Html.CheckBoxFor(m=>m.Tracks[i].Id)
@Html.CheckBoxFor(m=>m.Tracks[i].Id)-这会给我一个错误,int不能转换为bool。如果我使用IsSelected属性,一旦我选择了一个曲目,我就需要在右键后取消选择它?这些曲目不仅出现在相册中,还出现在艺术家的页面下。@Yorgo从MVC2
CheckBoxFor
开始还呈现一个存储值的隐藏字段,因此如果复选框未选中,它将返回
false
。我刚测试过。请参阅@user972616上的备注部分不确定您的第二条备注,但您是否能够在控制器中获得正确的数据?未选中的项目将不会提交。因此,您只能在实际操作中获取检查项。您应该将主键值设置为复选框值,而不是使用IsSelected属性。像这样
@Html.CheckBoxFor(m=>m.Tracks[i].Id)
@Html.CheckBoxFor(m=>m.Tracks[i].Id)-这会给我一个错误,int不能转换为bool。如果我使用IsSelected属性,一旦我选择了一个曲目,我就需要在右键后取消选择它?这些曲目不仅出现在相册中,还出现在艺术家的页面下。@Yorgo从MVC2
CheckBoxFor
开始还呈现一个存储值的隐藏字段,因此如果复选框未选中,它将返回
false
。我刚测试过。请参阅@user972616上的备注部分不确定您的第二条备注,但是您是否能够在控制器中获得正确的数据?