我有一个带有内部类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>
答案 0 :(得分:0)
你正在循环SeatPreferenceOptions
,而你正在尝试从SeatPreferences
使用SeatPreferenceOptions
集合索引获取项目,这显然会失败,因为可能会有或多或少的项目在其中一个中,所以改变循环:
@for(int i=0;i<Model.SeatPreferenceOptions.Count();i++)
为:
@for(int i=0;i<Model.SeatPreferences.Count();i++)