控制器中的“重新路由” URL请求

时间:2018-06-28 09:00:18

标签: asp.net-mvc asp.net-mvc-routing

我有一个MVC网络应用程序,可以显示各种文章。 视图的URL始终相同(并且必须相同):

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

通过提供越来越多的不同文章,我需要创建更多特定的视图,这些视图还需要不同的控制器操作来准备它们。 我想创建一个界面,该界面根据使用url的guid键的某些操作来“调度”那些控制器动作。

我不想使用ArticleView Controller本身的接口,但是以某种方式重新路由了请求[...]/ArticleView/ArticleView?id=[some guid] 转到另一个使用此界面的操作。

示例: 浏览器请求[...]/ArticleView/ArticleView?id=[some guid] ->内部路由到Action ResolveView ,该重定向到

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

有可能这样做吗?

1 个答案:

答案 0 :(得分:1)

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

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

public override RouteData GetRouteData(HttpContextBase context)
    ... 

此方法匹配传入的请求。

public override VirtualPathData getVirtualPath(RequestContext rcontext)
     ....

此方法匹配即将到来的请求。

最后,您可以使用自己的基于RouteBase的类注册路由。

http://www.dotnetcurry.com/aspnet-mvc/970/aspnet-mvc-custom-routes