C# 确定网络核心控制器中的路由名称、控制器、操作区域
我正在尝试编写一个类,以确定在NetCore mvc应用程序中浏览在线旅程时的下一步。 我希望这个旅程是可配置的-允许步骤顺序根据一些配置进行更改 我认为最简单的方法是保存一个包含控制器和操作(可能是区域和路由名称)的“步骤”列表,在其中定位当前步骤,然后根据列表中的下一步生成重定向 我很难得到所有这些。我可以使用C# 确定网络核心控制器中的路由名称、控制器、操作区域,c#,asp.net-core,asp.net-mvc-routing,C#,Asp.net Core,Asp.net Mvc Routing,我正在尝试编写一个类,以确定在NetCore mvc应用程序中浏览在线旅程时的下一步。 我希望这个旅程是可配置的-允许步骤顺序根据一些配置进行更改 我认为最简单的方法是保存一个包含控制器和操作(可能是区域和路由名称)的“步骤”列表,在其中定位当前步骤,然后根据列表中的下一步生成重定向 我很难得到所有这些。我可以使用ControllerContext.RouteData.Values[“controller”]/[“action”]毫无问题地获取当前控制器和操作,但是获取routename似乎有点
ControllerContext.RouteData.Values[“controller”]
/[“action”]
毫无问题地获取当前控制器和操作,但是获取routename似乎有点棘手。
RoutedData还包含一个路由器列表
,但不清楚其中哪一个是用于当前请求的
是否可以获取路由名称?还是我找错树了。。?或者我需要通过MVC路由有效地运行当前url,并从中获取我需要的内容
我们目前正在使用启动中的UseMvc(routes=>{
..方法中的常规路由集..中有许多路由,目前在不同的“产品”之间分割。
例如:
UseMvc(routes =>{
routes.MapRoute(
name: "prod1",
template: "product1/{controller=AboutYou}/{action=Index}/{id?}");
routes.MapRoute(
name: "prod2",
template: "product2/{controller=AboutYou}/{action=Index}/{id?}");
});
如果使用常规路由(例如{controller}/{action}/{id?}),您实际上不是只有一条路线吗?或者您实际上定义了更多路线吗?我们有多条路线,请参见编辑。也许我们应该使用区域,但希望重用存在于多个“旅程”中的某些控制器……或者您可以将
product1/product2
设置为类似{productId}的路线值/{controller=AboutYou}/{action=Index}/{id?}
然后您的操作可以接受string productId
作为参数。感谢您的输入,我实际上使用了一个简单的modelbinder从Url读取产品。可以将其粘贴在cookie中,并使用它来设置这样的路由..如果您使用传统路由(例如。{controller}/{action}/{id?}),您实际上不是只有一条路线吗?或者您实际上定义了更多路线吗?我们有多条路线,请参见编辑。也许我们应该使用区域,但希望重用存在于多个“旅程”中的某些控制器……或者您可以将product1/product2
设置为类似{productId}的路线值/{controller=AboutYou}/{action=Index}/{id?}
然后您的操作可以接受string productId
作为参数。感谢您的输入,我实际上使用了一个简单的modelbinder从Url读取产品。可以将其粘贴到cookie中,然后使用它来设置这样的路由。。