Массив доступа объявлен в контроллере C # в Razor - PullRequest
0 голосов
/ 07 января 2019

У меня есть двумерный массив, объявленный в контроллере MVC, и мне нужно получить к нему доступ через Razor, чтобы я мог просмотреть каждое значение.

Я создаю сеанс и устанавливаю его как массив, но я не могу понять, как получить доступ к массиву через бритву.

Контроллер:

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

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

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

Razor:

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

Я получаю сообщение об ошибке «объект» не содержит определения для Getlength, единственные предлагаемые действия: .Equals, .GetHashCode, .GetType и .ToString.

Вышеупомянутый c # в бритве работает, если я объявляю массив в бритве, заменяя «Session ...» именем переменной массива.

Я не могу прочитать какие-либо значения из сеанса массива для отображения на внешней стороне HTML, при этом @Session["Things"] отображает System.String[,] в браузере (но тогда это то же самое, как если бы я пытался вызвать массив, объявленный в razor ), @Session["Things"][1,1] выдает ошибку браузера

Невозможно применить индексирование с помощью [] к выражению типа 'object'

1 Ответ

0 голосов
/ 07 января 2019

Приведение к массиву:

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