如何在我的视图中将我的数组对象转换为字符串

时间:2016-12-27 07:55:01

标签: c# asp.net-mvc

/ *这是我的ontroller,数组对象必须转换为字符串类型,以便我可以执行我的操作

namespace taskmvc.Controllers {     公共类dogController:控制器     {

    public ActionResult dog()
    {
        string[,] array = new string[7, 14]
        {

            {"D","G","O","O","D","D","O","D","G","O","O","D","D","O"},
            {"O","D","O","O","G","G","G","D","O","D","G","O","G","G"},
            {"O","G","O","G","D","O","O","D","G","O","O","D","D","D"},
            {"D","G","D","O","O","O","G","G","O","O","G","D","G","O"},
            {"O","G","D","G","O","G","D","G","O","G","G","O","G","D"},
            {"D","D","D","G","D","D","O","D","O","O","G","D","O","O"},
            {"O","D","G","O","G","G","D","O","O","G","G","O","O","D"}
        };

        ViewData["f"] = array;



        return View(array);
    }

}

}

/ *这是我的观点,你可以看到我的数组是一个字符串

@{
    ViewBag.Title = "dog";
}

<h2>dog</h2>

@{
    string [,] array = ViewData["f"];
    int i, j;
    var n = 7;
    var m = 14;
}


@for (i = 0; i <n;i++)
{
              for(j=0;j<m;j++)
                {
                    if (array[i, j] == "D")
                    {
                        if (j + 1 < m && array[i, j + 1] == "O")//
                        {
                            if(j + 1 < m && array[i,j+1]=="G")
                            {

                            }
                        }
                    }
                    else if (i+1<n && j + 1 < m && array[i + 1, j + 1] == "O")
                    {
                        if (i + 1 < n && j + 1 < m && array[i + 1, j + 1] == "G")
                         {

                         }
                    }
                    else if (i - 1 >0 && array[i - 1, j] == "O")//
                    {
                        if (i - 1 > 0 && array[i - 1, j] == "G")
                        {

                        }
                    }
                    else if (j-1>0 && array[i, j - 1] == "O")
                    {
                        if (j - 1 > 0 && array[i, j - 1] == "G")
                        {

                        }
                    }
                    else if(i + 1< n && array[i +1, j ] == "O")
                    {
                        if (i + 1 < n && array[i + 1, j] == "G")
                        {

                        }
                    }
                    else if(i+1<n && j-1>0 && array[i+1,j-1]=="O")
                    {
                        if (i + 1 < n && j - 1 > 0 && array[i + 1, j - 1] == "G")
                        {

                        }
                    }
                    else if (i-1>0&&j-1>0&&array[i-1,j-1]=="O")
                    {
                        if (i - 1 > 0 && j - 1 > 0 && array[i - 1, j - 1] == "G")
                        {

                        }
                    }
                    else if(i-1>0&&j+1<m&&array[i-1,j+1]=="O")
                    {
                        if (i - 1 > 0 && j + 1 < m && array[i - 1, j + 1] == "G")
                        {

                        }
                    }

                }
            }

3 个答案:

答案 0 :(得分:1)

j < 14,因此max(j) = 13j+1 = 14array[i,j+1]是非法的。 j + 1超出范围。

之前检查:

if(j+1 < 14 && array[i,j+1]=="G")

......还有很多其他地方。 另外,用变量替换7和14。例如:

var n = 7;
var m = 14;

if(j+1 < m && array[i,j+1]=="G")

答案 1 :(得分:0)

由于您正在检查数组[i + 1,j + 1],数组[i - 1,j],数组[i + 1,j-1],因此您应该使用以下循环:

 for (i = 1; i <6i++)
            {
                for(j=1;j<13;j++)
                {
...

答案 2 :(得分:0)

您正尝试访问数组[i,j + 1]

表示最后一个索引j = 13,j + 1表示“14” 所以你正在访问数组[i,14] 由于此内存位置未分配给您的阵列,因此您将获得索引超出范围的异常。

尝试从i = 0循环; J = 0;并避免像数组[i-1,j-1]这样的情况。 (边界条件)