我正在尝试打印一个二维数组,但无法弄明白。
我的控制器使用此代码:
public ActionResult Test(string str)
{
DateTimeOffset offset = new DateTimeOffset(DateTime.Now);
offset = offset.AddHours(-5);
string[,] weekDays = new string[7,2];
for (int i = 0; i < 7; i++)
{
weekDays[i,0] = String.Format("{0:yyyy-MM-dd:dddd}", offset); //Date
weekDays[i,1] = String.Format("{0:dddd}", offset); //Text
offset = offset.AddHours(24);
}
weekDays[0,1] = "Today";
ViewData["weekDays"] = weekDays;
return View();
}
现在我不想打印这个工作日数组作为下拉列表,我认为这样可行:
<% foreach (var item in (string[,])ViewData["weekDays"])
{ %>
<option value=" <%= item[0] %> "> <%= item[1] %> </option>
<% } %>
但事实并非如此,此代码仅输出字符串的第一个字符。
所以任何人都有建议吗?
谢谢!
/ M
答案 0 :(得分:0)
这里的问题是数组上的foreach
将字符串作为项(而不是数组)返回,因此item [0]作为索引器在字符串上返回第一个字符。使用for
(或while
)循环,这应该可以解决问题:
<script runat="server">
private string[,] viewData;
protected string[,] Data
{
get
{
return viewData ?? (viewData = (string[,])ViewData["weekDays"]);
}
}
</script>
<% for (var i=0; i< Data.GetUpperBound(0); i++)
{ %>
<option value=" <%= Data[i][0] %> "> ...
<% } %>