我需要检查所需的复选框,以确定是否需要将音频添加到播放列表。我看到包含所有音频和复选框列表的视图,但在提交后,表单什么也没有返回,我不知道为什么会这样!
所以这是我的ViewModel代码:
@IBOutlet var myButton: UIButton!
@IBAction func myButton(sender: AnyObject)
{
myButton.backgroundColor = UIColor(red: 0.1, green: 0, blue: 0, alpha: 0.1)
myButton.titleLabel?.text = "4"
}
控制器:
public class AddToPlaylist
{
public Audio Audio { get; set; }
public bool IsSelected { get; set; } = false;
}
观看:
public ActionResult Add()
{
var item = new List<AddToPlaylist>();
foreach (var a in db.Audios)
{
var cur = new AddToPlaylist();
cur.Audio = a;
item.Add(cur);
}
return View(item);
}
[HttpPost]
public ActionResult Add(List<AddToPlaylist> playLists)
{
return View(playLists);
}
答案 0 :(得分:0)
尝试使用foreach
循环替换for
循环:
@for (var i = 0; i < Model.Count; i++)
{
<tr>
<td>
@Html.DisplayFor(x => x[i].Audio.Band.Name)
</td>
<td>
@Html.DisplayFor(x => x[i].Audio.Title)
</td>
<td>
@Html.CheckBoxFor(x => x[i].IsSelected)
</td>
</tr>
}
另请注意,由于您只显示Audio.Band.Name
和Audio.Title
属性,并且表单中没有相应的input
字段,因此您永远无法检索其值回发。您只会检索所选的复选框值。如果您想要绑定这些值,您可以考虑将它们包含在隐藏字段中:
@Html.HiddenFor(x => x[i].Audio.Band.Name)
@Html.HiddenFor(x => x[i].Audio.Title)
有关模型绑定到列表的更多信息,我建议您阅读following blog post
,其中详细说明了如何命名输入字段,以便ASP.NET MVC模型绑定器能够检索值回发。