Asp.net mvc ASP.NET MVC Url。操作路由错误
我已经用了一段时间了,但我似乎不明白,在这个简单的代码中哪里会出错:Asp.net mvc ASP.NET MVC Url。操作路由错误,asp.net-mvc,routing,Asp.net Mvc,Routing,我已经用了一段时间了,但我似乎不明白,在这个简单的代码中哪里会出错: <a href="<%= Url.Action("Page", new { page=(Model.PageIndex + 1) }) %>" >a</a> 当然这个方法 public ActionResult Index(int? page) 我得到的不是预期的地址,而是 使用时 <%= Html.RouteLink("a", "Paging", new { page=(Mode
<a href="<%= Url.Action("Page", new { page=(Model.PageIndex + 1) }) %>" >a</a>
当然这个方法
public ActionResult Index(int? page)
我得到的不是预期的地址,而是
使用时
<%= Html.RouteLink("a", "Paging", new { page=(Model.PageIndex+1) }) %>
它起作用了。。请问,我的错在哪里?我想要图像链接,所以如果有办法将其插入到Html.RouteLink中,我也会通知您这些信息
提前谢谢。我不知道为什么,但是
<%= Url.Action("Index", new { page=(Model.PageIndex + 1) }) %>
工作,并显示和指向/Home/Page/1。如果有人能给我解释一下,我会很感激的。这里有一大堆内容要介绍,让你完全了解发生了什么。对不起,这会有点长
routes.MapRoute(
"Paging",
"Home/Page/{page}",
new { controller = "Home", action = "Index" }
);
首先,这是你想走的路线。在路由路径中不包括操作路由参数“{action}”。此路由可能执行的唯一操作是指定为默认操作值“Index”的值
第二,在链接中,您正在设置页面的操作。您期望的路由不接受操作作为参数,并且它知道的唯一操作是索引。当Url.Action在路由表中查找可能的路由时,它将跳过所需的路由,因为该路由不接受Page的操作。不过,默认路由是有效的,因为您隐式地提供了一个控制器Home,显式地提供了一个操作Page,允许框架为id提供一个默认值string.Empty,并将任何其他参数作为查询参数Page附加
当您将Url.Action更改为“Index”时,Url.Action方法检查了routes表,并找到了为Home controller指定了索引操作的路由,该路由的参数为page,一切都很好
希望这对您有所帮助,不要太混乱。您使用的是什么操作-Home.Paging还是Home.Index?我使用的是Home.Index。分页只是路由表条目的名称。
routes.MapRoute(
"Paging",
"Home/Page/{page}",
new { controller = "Home", action = "Index" }
);
<a href="<%= Url.Action("Page", new { page=(Model.PageIndex + 1) }) %>" >a</a>