好的,这很简单,但我可以" T GET IT DONE> :(
我的ViewModel
public List<string> Answers = new List<string>();
我的观点
@for (int i = 0; i < 4; i++)
{
<div class="form-group">
@Html.TextBoxFor(x => x.Answers[0], new { @class = "form-control" })
</div>
}
我收到错误:
指数超出范围。必须是非负数且小于集合的大小。 参数名称:index
这到底是怎么回事?
编辑: 即使我尝试这个,这也不会绑定我的控制器中的值。
@for (int i = 0; i < 4; i++)
{
<div class="form-group">
<input type="text" name="Answers[@i]" value="" />
</div>
}
答案 0 :(得分:0)
您需要首先填充列表......例如:
public List<string> Answers = new List<string>();
foreach(var thing in Something){
Answers.Add(thing);
}
答案 1 :(得分:0)
您需要在视图顶部添加@model ModelName
。没有它,它将无法知道你想要循环的是什么。在模型中为答案设置属性,在视图顶部添加@model ModelWithAnswers
并迭代属性。
答案 2 :(得分:0)
正如其他人所指出的那样,索引超出范围正在发生,因为您正在引用集合中不存在的元素。
解决该问题,确保您的迭代器受元素约束,例如:
@for (int i = 0; i < Model.Answers.Count; i++)
{
<div class="form-group">
@Html.TextBoxFor(x => x.Answers[i], new { @class = "form-control" })
</div>
}
如果您的模型中没有答案,则不会显示任何文本框。根据您的描述,我假设您至少需要4个,因此请确保在构建模型时使用空字符串或空值填充模型。