Asp.net mvc &引用;“重新路由”;控制器中的url请求

Asp.net mvc &引用;“重新路由”;控制器中的url请求,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我有一个MVC web应用程序,它提供各种文章。 视图的url始终相同(并且需要相同): 通过提供越来越多不同的文章,我需要创建更具体的视图,这些视图也需要不同的控制器操作来准备它们。 我想创建一个接口,根据url的guid键的某些操作“分派”这些控制器操作 我不想使用ArticleView控制器本身中的接口,而是以某种方式重新路由请求[…]/ArticleView/ArticleView?id=[some guid] 然后转到另一个使用此接口的操作 例如: 浏览器请求[…]/ArticleVi

我有一个MVC web应用程序,它提供各种文章。 视图的url始终相同(并且需要相同):

通过提供越来越多不同的文章,我需要创建更具体的视图,这些视图也需要不同的控制器操作来准备它们。 我想创建一个接口,根据url的guid键的某些操作“分派”这些控制器操作

我不想使用
ArticleView控制器本身中的接口,而是以某种方式重新路由请求
[…]/ArticleView/ArticleView?id=[some guid]
然后转到另一个使用此接口的操作

例如: 浏览器请求
[…]/ArticleView/ArticleView?id=[某些guid]
->内部路由到重定向到的
操作
ResolveView

`[...]/SuperSpecialArticleView/ArticleView?id=[some guid]`

有可能这样做吗?

在ArticleView操作中,您可以使用某种服务,该服务将决定重新路由到另一个控制器操作并返回正确的视图

您还可以在ASP.NET平台中更改默认路由: 您需要实现从RouteBase类继承的自己的类。您需要实现以下方法:

public override RouteData GetRouteData(HttpContextBase context)
    ... 
此方法匹配传入的请求

public override VirtualPathData getVirtualPath(RequestContext rcontext)
     ....
此方法匹配传出的请求

public override VirtualPathData getVirtualPath(RequestContext rcontext)
     ....
最后,您可以使用自己的基于RouteBase的类注册路由


我也可以使用routes.MapRoute(名称:“ArticlePresentation”,url:“{ArticleView}/{ArticleView}/{id}”,默认值:new{controller=“ArticleViewDispatcher”,action=“Index”,id=UrlParameter.Optional});如果是问题,请使用“?”对不起。是的,这应该是个问题。我尝试添加一个特定的MapRoute,就像我提到的那样,但这不起作用