gpt4 book ai didi

asp.net-mvc - 如何获取 ASP.NET MVC Controller 中的路由名称?

转载 作者:行者123 更新时间:2023-12-03 05:56:56 25 4
gpt4 key购买 nike

ASP.NET MVC 路由在映射时具有名称:

routes.MapRoute(
"Debug", // Route name -- how can I use this later????
"debug/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = string.Empty } );

有没有办法获取路线名称,例如上例中的“调试”?我想在 Controller 的 OnActionExecuting 中访问它,以便在调试时可以在 ViewData 中设置内容,例如,通过在 URL 前加上/debug/... 前缀

最佳答案

不幸的是,路线名称未存储在 route 。它仅在 MVC 内部用作集合中的键。我认为这在使用 HtmlHelper.RouteLink 创建链接时仍然可以使用(也许在其他地方也可以,不知道)。

无论如何,我也需要它,这就是我所做的:

public static class RouteCollectionExtensions
{
public static Route MapRouteWithName(this RouteCollection routes,
string name, string url, object defaults, object constraints)
{
Route route = routes.MapRoute(name, url, defaults, constraints);
route.DataTokens = new RouteValueDictionary();
route.DataTokens.Add("RouteName", name);

return route;
}
}

所以我可以注册这样的路线:

routes.MapRouteWithName(
"myRouteName",
"{controller}/{action}/{username}",
new { controller = "Home", action = "List" }
);

在我的 Controller 操作中,我可以通过以下方式访问路由名称:

RouteData.DataTokens["RouteName"]

关于asp.net-mvc - 如何获取 ASP.NET MVC Controller 中的路由名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/363211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com