我有一个页面在阅读一个提供ID列表的api。 然后,我希望它创建一个链接,然后将该ID发送到另一个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 />
}
}
这是做什么的,我理解为什么,是将最终记录的ID传递给api,并始终为我提供该结果,因为i是此时的最终值。 我如何才能告诉链接它需要保留它的i迭代并传递该值?
答案 0 :(得分:0)
使用此表达式
Session["game"] = currID
实际上,您正在使用currID的当前值为每次迭代更新循环中的Session项目值。
如果要发送“会话”项值作为查询/路由值,则可以使用需要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类,等等