Tri*_*ack 2 asp.net-mvc routing
我现在一直在使用它,但我似乎无法弄清楚,在这个简单的代码中可能出错:
<a href="<%= Url.Action("Page", new { page=(Model.PageIndex + 1) }) %>" >a</a>
Run Code Online (Sandbox Code Playgroud)
使用此路由表:
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
);
Run Code Online (Sandbox Code Playgroud)
当然这种方法
public ActionResult Index(int? page)
Run Code Online (Sandbox Code Playgroud)
我得到的不是预期的地址http:// localhost:58296/Home/Page/1一个http:// localhost:58296/Home/Page?page = 1
使用时
<%= Html.RouteLink("a", "Paging", new { page=(Model.PageIndex+1) }) %>
Run Code Online (Sandbox Code Playgroud)
它有效..请问,我的错误在哪里?我想要图片链接,所以如果有办法将它插入到Html.RouteLink中,我也会批评这些信息.
提前致谢.
这里有很多项目可供您充分了解正在发生的事情.对不起,这会有点长.
routes.MapRoute(
"Paging",
"Home/Page/{page}",
new { controller = "Home", action = "Index" }
);
Run Code Online (Sandbox Code Playgroud)
首先,这是你想要的路线.您不在路径路径中包含操作路由参数"{action}".此路由可能采取的唯一操作是您指定为默认操作值"Index"的值.
<a href="<%= Url.Action("Page", new { page=(Model.PageIndex + 1) }) %>" >a</a>
Run Code Online (Sandbox Code Playgroud)
其次,在您的链接中,您正在设置Page的操作.您期望的路线不接受作为参数的操作,并且它唯一知道的操作是索引.当Url.Action在路由表中查找可能的路由时,它将跳过您想要的路由,因为该路由不接受Page的操作.默认路由是有效的,因为您隐式提供控制器,Home,显式提供操作,页面,允许框架提供id,string.Empty的默认值,并且任何其他参数作为查询参数页面添加.
当您将Url.Action更改为"Index"时,Url.Action方法检查了routes表,并找到了为Home控制器指定了Index的操作的路由,其参数为page,所有内容都更加快乐.
希望有所帮助,而不是太混乱.
| 归档时间: |
|
| 查看次数: |
15373 次 |
| 最近记录: |