a 有了这个路由表: routes.MapRoute( "Paging", -6ren">
gpt4 book ai didi

asp.net-mvc - ASP.NET MVC Url.Action 路由错误

转载 作者:行者123 更新时间:2023-12-04 22:00:30 25 4
gpt4 key购买 nike

我已经用了一段时间了,但我似乎无法弄清楚,这个简单的代码哪里可能出错:

<a href="<%= Url.Action("Page", new { page=(Model.PageIndex + 1) }) %>" >a</a>

有了这个路由表:

routes.MapRoute(
"Paging",
"Home/Page/{page}",
new { controller = "Home", action = "Index" }
);

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);

当然还有这个方法

public ActionResult Index(int? page)

我得到的不是预期的地址 http://localhost:58296/Home/Page/1一个http://localhost:58296/Home/Page?page=1

使用时

<%= Html.RouteLink("a", "Paging", new { page=(Model.PageIndex+1) }) %>

它有效..请问我的错误在哪里?我想要图片链接,所以如果有办法将它插入到 Html.RouteLink 中,我也会感谢该信息。

提前致谢。

最佳答案

这里有很多项目可以让您完全了解正在发生的事情。抱歉,这会有点长。

routes.MapRoute(
"Paging",
"Home/Page/{page}",
new { controller = "Home", action = "Index" }
);

首先,这是您要到达的路线。您不在路由路径中包含操作路由参数“{action}”。此路由可能采取的唯一操作是您指定为默认操作值“索引”的值。

<a href="<%= Url.Action("Page", new { page=(Model.PageIndex + 1) }) %>" >a</a>

其次,在您的链接中,您正在设置 Page 的操作。您期望的路线不接受 Action 作为参数,它知道的唯一 Action 是索引。当 Url.Action 在您的路由表中查找可能的路由时,它将跳过您想要的路由,因为该路由不接受 Page 的操作。默认路由是有效的,因为您隐式提供 Controller Home,显式提供操作 Page,允许框架提供 id 的默认值,string.Empty,并且任何其他参数都作为查询参数添加,page。

当您将 Url.Action 更改为“Index”时,Url.Action 方法会检查路由表并找到具有为 Home Controller 指定的 Index 操作且参数为 page 的路由,一切都会更快乐。

希望对您有所帮助,不要太困惑。

关于asp.net-mvc - ASP.NET MVC Url.Action 路由错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1298422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com