«Перенаправить» запросы URL в контроллере - PullRequest
0 голосов
/ 28 июня 2018

У меня есть веб-приложение MVC, которое представляет различные статьи. URL для представления всегда один и тот же (и должен быть):

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

Предоставляя все больше и больше разных статей, мне нужно создавать более конкретные представления, которые также требуют различных действий контроллера для их подготовки. Я хотел бы создать интерфейс, который «отправляет» эти действия контроллера в зависимости от некоторых операций с ключом guid URL.

Я не хочу использовать интерфейс в самом ArticleView Controller, но каким-то образом перенаправить запрос [...]/ArticleView/ArticleView?id=[some guid] к другому действию, которое использует этот интерфейс затем.

Пример: Браузерные запросы [...]/ArticleView/ArticleView?id=[some guid] -> Внутренне направляется на Action ResolveView , который перенаправляет на

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

Есть ли возможность сделать это?

1 Ответ

0 голосов
/ 28 июня 2018

В действии 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

...