创建多个相同的单选按钮组

时间:2017-03-29 13:54:50

标签: c# asp.net asp.net-mvc

我有一个带有内部类tripSeatPreference列表的模型,我想为该列表中的每个项目创建一组新的单选按钮。我在视图下面写了我的尝试,它现在不起作用我的索引似乎超出了我的for循环范围。

型号:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using MVC_COMP1562.Models;

namespace MVC_COMP1562.ViewModels
{
    public class SeatPreferencesShoppingCartViewModel
    {
        public ShoppingCart ShoppingCart { get; set; }
        public float Total { get; set; }
        public List<tripSeatPreference> Preferences { get; set; }

        public IEnumerable<string> SeatPreferenceOptions { get; set; }

        public class tripSeatPreference
        {
            public int Id { get; set; }
            [Required]
            public int? SeatPreferenceSelected { get; set; }
            public CartItem CartItem { get; set; }
        }
    }
}

查看:

@model MVC_COMP1562.ViewModels.SeatPreferencesShoppingCartViewModel

<table class="table">

    @for(int i=0;i<Model.SeatPreferenceOptions.Count();i++)
    {
        <tr>
            <td>@Html.DisplayFor(m=>Model.Preferences[i].CartItem.Trip.Title)</td>
        </tr>
        foreach (var radio in Model.SeatPreferenceOptions)
        {
            <tr>
                <td>@Html.RadioButtonFor(m => Model.Preferences[i].SeatPreferenceSelected, Model.Preferences[i].Id, new { id = Model.Preferences[i].Id })</td>
                <td><label for="@Model.Preferences[i].Id">@radio</label><td/>
            </tr>
        }
    }

</table>

1 个答案:

答案 0 :(得分:0)

你正在循环SeatPreferenceOptions,而你正在尝试从SeatPreferences使用SeatPreferenceOptions集合索引获取项目,这显然会失败,因为可能会有或多或少的项目在其中一个中,所以改变循环:

@for(int i=0;i<Model.SeatPreferenceOptions.Count();i++)

为:

 @for(int i=0;i<Model.SeatPreferences.Count();i++)