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/123
或 Trainee/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" }
);
}
}
我想知道是否可以在 Route.Config 文件中编写一个规则,该规则可以包含单个控制器中的所有操作?我看过this article但是有点偏题(刚开始url重写和路由,术语不熟悉)
我已经设法将我的一项操作从 mydomain.co.za/Trainee/Action?id=123
更改为 mydomain.co.za/Trainee/Action/123
,但我希望能够包含受训控制器中的所有操作,这样您就可以有一个规则来产生 Trainee/Action1/123
或 Trainee/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" }
);
}
}