我有两个 Controller ,HomeController 和 ResourcesController。 当请求对 HomeController 执行操作时,我想从 url 中隐藏 Home/,但对于 ResourcesController(或任何其他 controlelr),我想将 Controller 名称保留在 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 }
);
对于家庭 Controller ,它按预期工作,但对于资源 Controller ,我得到“404...找不到资源”
最佳答案
一种可能的方法是您可以在 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
);
关于asp.net-mvc - 从mvc url中隐藏一个 Controller 名称,显示其他 Controller 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24414960/