ASP.NET MVC 5 Url 重写以包含控制器中的所有操作?

ASP.NET MVC 5 Url Rewriting to encompass all actions in controller?

我想知道是否可以在 Route.Config 文件中编写一个规则,该规则可以包含单个控制器中的所有操作?我看过this article但是有点偏题(刚开始url重写和路由,术语不熟悉)

我已经设法将我的一项操作从 mydomain.co.za/Trainee/Action?id=123 更改为 mydomain.co.za/Trainee/Action/123,但我希望能够包含受训控制器中的所有操作,这样您就可以有一个规则来产生 Trainee/Action1/123Trainee/Action2/123 这是我使用的代码:

        routes.MapRoute(
            name: "ActionRewrite",
            url: "Trainee/Action/{id}",
            defaults: new { controller = "Trainee", action = "Action" }
        );

附带说明一下,是否也可以将参数隐藏在 URL 中,这样无论用户是什么,您都可以简单地使用 mydomain.co.za/Action/在做什么?

试试这个:

routes.MapRoute(
            name: "ActionRewrite",
            url: "Trainee/{action}/{id}",
            defaults: new { controller = "Trainee", action = {action} }
        );
  • 请记住,您可以在 url 匹配项中使用通配符。

  • 如果您愿意,您可以指定 {id} 参数保持可选,这意味着它也将匹配未指定参数的操作。

试试这个.. Url 使用自定义 ID 和名称重新布线。 在应用程序启动路由配置中添加。

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

routes.MapRoute( name: "contactus", url: "contactus", defaults: new { Controller = "Cms", action = "Index", id = (int)Common.CMSContactUs }, namespaces: new[] { "QZero.Controllers" } ); routes.MapRoute( name: "aboutus", url: "aboutus", defaults: new { Controller = "Cms", action = "Index", id = (int)Common.CMSAboutUs }, namespaces: new[] { "QZero.Controllers" } ); routes.MapRoute( name: "useragreement", url: "useragreement", defaults: new { Controller = "Cms", action = "Index", id = (int)Common.CMSUserAgreement }, namespaces: new[] { "QZero.Controllers" } ); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new[] { "QZero.Controllers" } ); } }