通过视图传递二维数组

时间:2011-01-17 01:59:27

标签: c# asp.net-mvc-2

我正在尝试打印一个二维数组,但无法弄明白。

我的控制器使用此代码:

        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

1 个答案:

答案 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] %> "> ...
            <% } %>