在for循环中绑定

时间:2017-11-18 22:26:57

标签: c# asp.net-mvc

我有一个模型,我可以自己成功绑定。但是当我创建模型列表并循环遍历它时,我的绑定失败了。该模型如下所示:

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的值。我真的已经没有关于如何解决这个问题的想法了。我很快就会为可选成分添加复选框,但无法继续使用。

0 个答案:

没有答案