Передача переменной сеанса в ссылку, созданную для цикла C # - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть страница, на которой читается API, содержащий список идентификаторов.Затем я хочу создать ссылку, которая затем отправляет этот идентификатор другому API для получения этого отдельного объекта.У меня есть страницы, работающие вручную, но теперь проблема заключается в попытке передать данные между ними.

Мой текущий код такой:

@{
    for (var i = 0; i < Model.records.Count; i++)
    {
        string currID = Model.records[i].ID;
        <td>@Html.ActionLink(Model.records[i].ID, "Game", "Home", Session["game"] = currID)</td>
        <td>@Model.records[i].GameName</td>
        <td>@Model.records[i].Player1</td>
        <td>@Model.records[i].Player2</td>
        <td></td><br />
    }    
}

Что это делает, и я понимаю, почему, передает идентификатор окончательной записи в API и всегда дает мне этот результат, так как яокончательное значение в этой точке.как я могу сказать ссылке, что она должна поддерживать итерацию i и передать это значение?

1 Ответ

0 голосов
/ 04 декабря 2018

С этим выражением,

Session["game"] = currID

Вы фактически обновляете значение элемента сеанса в цикле для каждой итерации с помощью текущего значения currID.

Если вы хотите отправить сеансЗначение элемента в качестве значения запроса / маршрута, вы можете использовать перегрузку, которая принимает 5 параметров.Четвертый параметр - это анонимный объект, в котором вы будете указывать ключ и значения, эти ключ и значения будут использоваться для генерации URL.

Например, приведенный ниже код добавит элемент строки запроса gameId изначением будет значение, сохраненное в Session["game"]

@{
    var game = Session["game"]; 
    for (var i = 0; i < Model.records.Count; i++)
    {
        string currID = Model.records[i].ID;
        <td>@Html.ActionLink(Model.records[i].ID, "Game", "Home",
                                    new { gameId = game }, null)</td>
        <td>@Model.records[i].GameName</td>

    }    
}

Предполагается, что в вашем методе действия Game есть параметр с именем gameId

public ActionResult Game(string gameId)
{
   // to do : Return something
}

Если вы хотите отправить currID, также передайте это

@Html.ActionLink(Model.records[i].ID, "Game", "Home",
                                        new { gameId = game, currId = currID }, null)

Пятый параметр (где я передал null) предназначен для htmlAttributes, который будет использоваться для добавления других атрибутов HTML к элементу, представленному этим помощником (Пример: если вы хотите добавить класс CSS и т. Д.)

...