【问题标题】:Routing to another action than Index as default默认路由到索引以外的其他操作
【发布时间】:2019-02-18 00:11:48
【问题描述】:

我已经搜索了很长时间,但是对于这种情况,我没有找到答案。

我有一个HomeController,我的 route.config 中的默认路由如下:

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

所以; http://localhost:36690/Home 自动调用Index

我还有一个带有Index 方法的MyController(它是route.config 中的自定义路由)并且可以只写http://localhost:36690/My 并且它可以工作。

但我想要一个自定义路由没有任何Index

如果我请求localhost:36690/New,它应该调用BASIC

所以我尝试了以下方法:

routes.MapRoute(
    "New",
    "{controller}/{action}",
    new { controller = "New", action = "Basic" }
);

但它忽略了我的默认操作“基本”并引发错误:

“/”应用程序中的服务器错误。无法找到该资源。 "

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing


    【解决方案1】:

    您可以专门为该控制器添加另一个路由。

    routes.MapRoute(
        name: "New",
        url: "New/{action}",
        defaults: new { controller = "New", action = "Basic" }
    );
    
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
    

    这样,当/New 被调用时,它将默认为NewController.Basic

    【讨论】:

    • 正如您在我的问题的第二个代码块中看到的那样,我确实做到了。不幸的是,它显示“/”应用程序中的服务器错误。无法找到该资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。请求的 URL:/New "
    • @thestruggleisreal 再仔细看看我回答中的路线。您的第二个代码块与我建议的不同。如果您在两条路由中使用相同的 url 模板 url: "{controller}/{action}/{id}",则会导致路由冲突。还要注意我有路线的顺序,因为这也很重要。需要在更通用的默认路由之前添加更具体/自定义的路由。
    • 我把它放在默认之前并在 url 中尝试了 {'New'}/{action} (如果我在问题中提到这一点会更好,抱歉),以及我的 ,New 的 url 模板' 如果这算作 url 模板中的差异,则路由不包含 id。但知道我明白你的意思我的网址:“{controller="New"}/{action}”,必须是“New/{action}”,控制器周围没有大括号,非常感谢。另一个问题:在哪种情况下我需要“{'New'}/{act}”?或者它只是一个被接受的IDE弱点。因为那么,Newroute 赢得比赛总是我去 localhost:xx/doesntmatter。在我看来,这是一个错误
    • @thestruggleisreal 花括号{..} 用于模板参数。与 id 用作参数的方式相同,如果您有一个名为 New 的参数,那么您会将其包含在模板中。
    猜你喜欢
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 2020-12-04
    • 2021-01-10
    • 2014-07-25
    相关资源
    最近更新 更多