我有一个模型,我可以自己成功绑定。但是当我创建模型列表并循环遍历它时,我的绑定失败了。该模型如下所示:
public class SandwichViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public int SelectedSize{ get; set; }
public IList<SizeViewModel> SandwichSizes { get; set; }
}
我可以在我的视图中成功绑定一些单选按钮,通过这样做回发。
@using (Html.BeginForm("Add", "Basket", FormMethod.Post))
{
@Html.RadioButtonFor(model => model.SelectedSize,Model.SandwichSizes[0].Id)
@Html.RadioButtonFor(model => model.SelectedSize,Model.SandwichSizes[1].Id)
@Html.RadioButtonFor(model => model.SelectedSize,Model.SandwichSizes[2].Id)
@Html.HiddenFor(model => model.Id)
<input type="submit" value="Add" />
}
这是我发回的地方:
public ActionResult Add(SandwichViewModel sandwichViewModel)
{
if (ModelState.IsValid)
{
int test = SandwichViewModel.SelectedSize;
}
return RedirectToAction("Index", "Test");
}
但是我需要在视图中显示多个三明治。起初我刚刚制作了一份三明治列表,并通过它发送它没有用,然后我创建了一个新模型,它只包含一个SandwichesViewModel列表。
public class MainViewModel
{
public List<SandwichViewModel> SandwichView { get; set; }
}
然后在我看来,我循环并将每个三明治给它自己的形状,就像这样。
@for (var i = 0; i < Model.SandwichView.Count(); i++)
{
using (Html.BeginForm("Add", "Basket", FormMethod.Post, new { id = Model.SandwichView[i].Id, name = Model.SandwichView[i].Id }))
{
@Html.RadioButtonFor(m => m.SandwichView[i].SelectedSize, Model.SandwichView[i].SandwichSizes[0].Id)
@Html.RadioButtonFor(m => m.SandwichView[i].SelectedSize, Model.SandwichView[i].SandwichSizes[1].Id)
@Html.RadioButtonFor(m => m.SandwichView[i].SelectedSize, Model.SandwichView[i].SandwichSizes[2].Id)
@Html.HiddenFor(m => m.SandwichView[i].Id)
<input type="submit" />
}
}
但是Post总是返回0 Id和SelectedSize的值。我真的已经没有关于如何解决这个问题的想法了。我很快就会为可选成分添加复选框,但无法继续使用。