【问题标题】:Proper way to atchive a Asp.net MVC Route归档 Asp.net MVC 路由的正确方法
【发布时间】:2013-01-07 06:34:59
【问题描述】:

我刚开始学习 asp.net mvc 平台,我真的不喜欢在 url 中有 /home/。

有没有办法为家庭控制器提供一个只有动作和 id 的路由,如果有 3 个动作(索引、关于和联系),则 url 读取 localhost:1190/ 、 localhost:1190/about 和 localhost: 1190/联系。

我知道我可以将它们制成单独的控制器,并且每个控制器都有一个索引视图,但这真的是最好的方法吗?

【问题讨论】:

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


    【解决方案1】:

    当然:

    routes.MapRoute(
        "Default",
        "{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
    

    但请记住,由于控制器名称不再是路由的一部分,因此您不能再指定它 -> 您将始终拥有一个控制器 - Home,如果您开始执行所有操作,它可能很快就会变得臃肿在单个控制器中。

    【讨论】:

    • 好吧,我就是这么想的。我在想,也许有一些聪明的方法可以有一条路线,在家它只需要动作,但对于其他一切,它需要控制器和动作。 -- 谢谢
    • 事实上你可以使用route constraints。这样,您可以拥有 2 个路由定义,一个包含 Home 操作,您在其中将它们限制为仅要处理的名称,然后具有默认路由,您将控制器名称限制为与 home 和 of 不同的任何内容当然是您在第一个路由定义中列出的控制器操作。
    • 您可以在此之前添加更具体的路由,例如 routes.MapRoute( null, "orders/{action}/{id}", new { controller = "Orders", action = "Index" , id = UrlParameter.Optional } );
    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多