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