【问题标题】:Hide one controller name from mvc url, show other controller names从 mvc url 中隐藏一个控制器名称,显示其他控制器名称
【发布时间】:2014-08-16 09:18:24
【问题描述】:

我有两个控制器,HomeController 和 ResourcesController。 当请求对 HomeController 执行操作时,我想从 url 中隐藏 Home/,但是对于 ResourcesController(或任何其他控制器),我想将控制器名称保留在 url 中。 例如。 /Home/Products 将是 /Produtcs,但 /Resources/Banana 应该保留 /Resources/Banana

这些是我的路线:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

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

它对家庭控制器按预期工作,但对于资源控制器我得到“404...找不到资源”

【问题讨论】:

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


【解决方案1】:

一种可能的方法是您可以在 global.asax 文件中映射所有主页操作。请参阅下面的示例代码。

例如

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多