将字符串数组值从控制器传递到视图

时间:2017-08-23 04:56:17

标签: c# asp.net-mvc razor

如何将字符串数组值从控制器传递到视图?我收到了这个错误"索引超出了数组的范围。"

@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" };
}

1 个答案:

答案 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