如何将字符串数组值从控制器传递到视图?我收到了这个错误"索引超出了数组的范围。"
@for(int i =0 ; i< 2; i ++)
{
<div class=" col-md-3">
@Html.EditorFor(model => model.Overnight[i], new { htmlAttributes = new { @class = "form-control" } })
</div>
}
public string[] Overnight{ get; set; }
public ActionResult Create()
{
model.Overnight = new string[] {"A" };
model.Overnight = new string[] {"b" };
}
答案 0 :(得分:1)
执行以下行时:
model.Overnight = new string[] {"A" };
model.Overnight = new string[] {"b" };
您没有将"B"
添加到值为"A"
的数组中,而是仅使用"B"
创建新数组并将其分配给Overnight
属性,而不是那里的阵列。因此,当你的循环迭代到i < 2
然后它适用于i = 0
但是对于i = 1
,数组中没有这样的项目,你得到OutOfBounds
。
你想要的是:
model.Overnight = new string[] {"A", "B"};
//or
model.Overnight = new string[] {"A"};
model.Overnight.Add("B");
另外,不要像你那样定义你的循环:
@for(int i = 0 ; i < 2; i++)
完全是因为你遇到的原因。而是循环直到i < model.Overnight.Length