【问题标题】:Custom routing ASP.NET MVC set default action in each controller自定义路由 ASP.NET MVC 在每个控制器中设置默认操作
【发布时间】:2011-05-04 12:12:27
【问题描述】:

如何定义它链接到默认操作的路由。

例如,

/Customer/acme-company

/Client/bill-johnson

一直在寻找方法 Get in controllers Client 和 Customer。

【问题讨论】:

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


    【解决方案1】:

    使用参数默认值。

    routes.MapRoute(
        "MyRoute",                                   // Route name
        "{controller}/{someParameter}",              // URL with parameters
        new { controller = "Home", action = "Get" }  // Parameter defaults
    );
    

    【讨论】:

    • 就像我对UpTheCreek's answer 的评论一样,这也是有效的。但是,我认为这取决于规模和控制器的实例化方式。
    【解决方案2】:

    类似这样的:

    routes.MapRoute("Client",
        "Client/{name}",
        new { controller = "Client", action = "Get", });
    

    【讨论】:

    • 那么第二个 URL 将不匹配...路由的第一部分需要是动态的。
    • 在我看来,最好定义两条路线,而不是一条以适应所有情况。
    • 很公平——我猜是见仁见智。但看起来他只想提供 2 个网址,而不是真正的“所有情况”。
    • @RPN1984 & @UpTheCreek:您只需添加第二条路线(如果没有客户路线,答案是不完整的)。这两种方法都是有效的,具体取决于上下文。例如,如果您通过 DI 自定义注入控制器,那么一条统治它们的路线可能是个坏主意。
    • @casparOne - 我同意。但我们只能按照 OP 的要求进行 - 这是一种处理 2 条路线的方法。我们不知道他设置了哪些其他路由或 DI 配置。
    猜你喜欢
    • 2012-08-14
    • 2021-06-01
    • 2016-08-23
    • 2019-11-02
    • 1970-01-01
    • 2018-02-20
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多