【问题标题】:MVC3 Route Using Parameter Name in URL在 URL 中使用参数名称的 MVC3 路由
【发布时间】:2014-01-13 07:48:38
【问题描述】:

我有这些路线:

routes.MapRoute("ListPage", "{controller}/{action}/{pn}/{ps}", new { controller = "home", action = "index", pn = 1, ps = 10 });
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "home", action = "index", id = UrlParameter.Optional });

这使我可以使用以下网址:

/foo/bar/1/10

控制页面上的 foos 列表(第 1 页,每页 10 个项目)。万岁!

但是,以下给出了 404:

/foo/bar/1

使用Url.Action("bar", "foo", new { id = 1}) 给出网址

/foo/bar?id=1

然后与动作签名正确匹配

public ActionResult Bar(int id) { //stuff }

我的想法是表中的第一条路由不匹配,因为{pn}{ps} 都是必需的。

所以它下降到第二个路由,然后应该匹配参数为{id}

显然我的想法是不对的!

问题是:为什么没有参数名路由不匹配?

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-mvc-routing


    【解决方案1】:

    只需尝试交换routes 位置

    routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "home", action = "index", id = UrlParameter.Optional });
    routes.MapRoute("ListPage", "{controller}/{action}/{pn}/{ps}", new { controller = "home", action = "index", pn = 1, ps = 10 });
    

    【讨论】:

    • 那不匹配 /foo/bar/1/10 与第一条路线吗?更具体的,当然?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2017-04-01
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多