【问题标题】:Hide controller name from the url从 url 中隐藏控制器名称
【发布时间】:2013-10-02 18:59:24
【问题描述】:

我想从 url 中隐藏控制器名称并做到这一点

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "AccountRoute",
        "{action}",
        new { controller = "Account", action = "Index" }
        );


        routes.MapRoute(
           "Default", // Route name
           "{controller}/{action}/{id}", // URL with parameters
           new { controller = "Home", action = "Index", id = UrlParameter.Optional }// Parameter defaults
       );

    }

但是当我尝试去的时候

localhost:1234/设置 - 不起作用。

但是

localhost:1234/Account/Settings -works..

关于这个有很多问题,所有这些问题都暗示了我上面已经提出的问题。 我在哪里做错了?还是我错过了什么?

【问题讨论】:

    标签: asp.net-mvc url routes


    【解决方案1】:

    将您的AccountRoute 移动到Default 路由下方。请记住,创建这样的路线可能会导致意想不到的后果。

    【讨论】:

    • 在您的帐户控制器和其他一些控制器中具有相同名称的操作。只需要对命名保持警惕并意识到哪条路由会接收请求。多人参与一个项目时很重要。
    • 好的..我现在明白了..顺便把'accountroute'移到'default'下,没解决。
    • @GvM 如果我们用户 area 有默认路由到帐户控制器会怎样
    【解决方案2】:

    尝试向 AccountRoute 添加一个可选参数。请注意,您的操作与控制器的名称不同,否则路由将无法正常工作。

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

    【讨论】:

    • 您可能需要检查 Account 控制器是否位于正确/预期的命名空间中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 2013-09-08
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多