Razor中C#控制器中声明的访问数组

时间:2019-01-07 16:36:09

标签: c# arrays razor multidimensional-array

我在MVC控制器中声明了一个2D数组,我需要通过Razor访问它,以便可以遍历每个值。

我创建了一个会话并将其设置为数组,但是我不知道如何通过剃须刀访问数组。

控制器:

string[,] Things = new string[,] {
            { "thing1", "pie" },
            { "thing1", "cake" },
            { "thing1", "potato" }
        };

public void GetThings()
{
    Session["Things"] = Things;
}

public ActionResult Index()
{
    GetThings();
    return View();
}

剃刀:

@{
    for (int i = 0; i < Session["Things"].GetLength(0); i++)
    {
        @i
    }
}

我收到错误消息“'object'不包含Getlength的定义,建议的唯一操作是.Equals.GetHashCode.GetType和{{1 }}。

如果我在剃须刀中声明了数组,则用剃须刀中的上述c#起作用,用数组变量名替换“ Session ...”。

我无法从数组会话中读取任何值以显示在HTML前端上,因此在浏览器中显示.ToString会显示@Session["Things"](但这与我尝试调用剃刀中声明的数组),System.String[,]给出浏览器错误

  

不能将[]的索引应用于类型为'object'的表达式

1 个答案:

答案 0 :(得分:1)

投射到数组:

((string[,])Session["Things"]).GetLength(0)