<div class="form-group">
<span class="auto-style2">
<label class="col-xs control-label">First Name:</label>
</span>
<input type="text" name="Name" id="Name" value="<%:get_signUp_values()[0] %>" class="form-control" />
</div>
<div class="form-group">
<span class="auto-style2">
<label class="col-xs control-label">Last Name:</label>
</span>
<input type="text" name="lastName" id="lastName" value="<%:get_signUp_values()[1] %>" class="form-control" />
</div>
<div class="form-group">
<span class="auto-style2">
<label class="col-xs control-label">Birthday:</label>
</span>
<input type="text" name="dob" id="dob" value="<%:get_signUp_values()[2] %>-<%:get_signUp_values()[3] %>-<%:get_signUp_values()[4] %>" class="form-control" />
</div>
这是给出错误的代码
value="<%:get_signUp_values()[0] %>"
这是IndexOutOfRangeException: Index was outside the bounds of the array.
。这个错误发生在某些人身上,但不会发生在localhost
上。
代码隐藏:
public List<HtmlString> get_signUp_values()
{
int userid = Convert.ToInt32(Session["USERID"]);
List<DAO_SignUp> get_signUp_val = new List<DAO_SignUp>(DAO_SignUp.get_signUp(userid));
List<HtmlString> get_values = new List<HtmlString>();
foreach (var obj2 in get_signUp_val)
{
get_values.Add(new HtmlString(obj2.get_First_name));
get_values.Add(new HtmlString(obj2.get_last_name));
string dob = obj2.get_dob.ToString();
string patren = "-";
string[] substrings = Regex.Split(dob, patren);
string day = substrings[0];
string month = substrings[1];
string year = substrings[2];
get_values.Add(new HtmlString(day));
get_values.Add(new HtmlString(month));
get_values.Add(new HtmlString(year));
}
return get_values;
}
答案 0 :(得分:-2)
当您尝试访问不存在的数组索引时,会发生IndexOutOfRangeException。
通过查看您的代码,问题可能只有两个地方。
首先,我可以看到通过循环DAO_SignUp调用的结果来填充集合:
List<DAO_SignUp> get_signUp_val = new List<DAO_SignUp>(DAO_SignUp.get_signUp(userid));
foreach (var obj2 in get_signUp_val) (...)
然后我们可以推断出问题可能是DAO_SignUp.get_signUp(userid)
没有在服务器上返回任何内容,因此函数get_signUp_values()
返回的集合没有元素,并且在尝试访问结果索引时该功能,提出错误
正如你所说它在localhost上正常运行,你应该检查DAO_SignUp上的配置。如果它连接到数据库,请检查它是否有数据,以及连接字符串是否指向正确的数据库。
正如L.B的评论所指出的那样,另一个选项是循环中Regex.Split
返回的数组:
string[] substrings = Regex.Split(dob, patren);
string day = substrings[0];
string month = substrings[1];
string year = substrings[2];
如果Regex.Split
没有返回任何内容,则会引发该错误。在这种情况下,请在访问它之前检查substrings
的长度索引。