首页 > 解决方案 > 在上一个或下一个上将 ID 传递给控制器

问题描述

我有身份证清单

IList<string> pageIDList = new List<string>();

在我的 MVC 视图中,我有两个链接

<a href="@Url.Action("MyAction", new { id= item.id})"> Previous </a>
<a href="@Url.Action("MyAction", new { id= item.id})"> Next </a>

根据我所在的页面,我想将正确的 ID 传递给 MyAction 操作/控制器。

我想遍历我的 pageIDList 并获取当前 ID,如果单击 Previous 链接,我想传递当前 ID 之前的 ID。如果单击 Next 链接,我想将 id 传递到当前 ID 旁边。

有没有办法可以在 href 链接中迭代我的 pageIDList?

我准备了以下代码,但不知道在哪里插入它并将正确的 ID 传递给我的操作。

@{int i = 0; }
@foreach (var z in pageIDList)
{
   if (item.id.ToString() == z[i].ToString())
   { 
     id=z[i+1].ToString();
   }
}

我真的很感激任何想法/建议。

标签: c#.netasp.net-mvcmodel-view-controller

解决方案


如果字符串列表已经排序,那么您可以使用以下命令递增和递减索引:

pageIDList[pageIDList.IndexOf(item.id.ToString()) + 1]
pageIDList[pageIDList.IndexOf(item.id.ToString()) - 1]

因此在 href 中设置 id 如下所示:

<a href="@Url.Action("MyAction", new { id = pageIDList[pageIDList.IndexOf(item.id.ToString()) - 1]})"> Previous </a>
<a href="@Url.Action("MyAction", new { id = pageIDList[pageIDList.IndexOf(item.id.ToString()) + 1]})"> Next </a>

编辑:通过元素验证,它看起来像:

<a href="@Url.Action("MyAction", new { id= pageIDList.IndexOf(item.id.ToString()) > 1 ?  pageIDList[pageIDList.IndexOf(item.id.ToString()) - 1] : null })"> Previous </a>
<a href="@Url.Action("MyAction", new { id= pageIDList.IndexOf(item.id.ToString()) < pageIDList.Count ?  pageIDList[pageIDList.IndexOf(item.id.ToString()) + 1] : null})"> Next </a>

推荐阅读