У меня есть метод действия, и в зависимости от того, что ему передается, я хочу перенаправить на другое действие в другом контроллере. Имена действий и контроллеров определяются во время выполнения.В ASP.NET MVC, сохраняйте URL-адрес при возврате RedirectToAction
Если я верну RedirectToAction(), он заставит перенаправить и изменить URL-адрес в браузере. Я бы хотел что-то вроде TransferToAction(), который может перенести обработку текущего запроса на другое действие без переадресации. Кажется, я помню метод, который ведет себя как в предыдущих предпросмотрах, но я не могу найти его в RC ASP.NET MVC.
Вы знаете, как я буду это делать?
UPDATE
Я добавил следующий маршрут:
routes.MapRoute(
"PageRouter",
"{site}/{*url}",
new { controller = "PageRouter",
action = "RoutePage", site = "", url = "" }
);
И в RoutePage PageRouter действия регулятора:
public ActionResult RoutePage(string site, string url)
{
var controller = new HomeController {ControllerContext = ControllerContext};
controller.RouteData.Values["controller"] = "Home";
controller.RouteData.Values["action"] = "Index";
return controller.Index(site, url);
}
Я должен был установить контроллер и действие в RouteData для дома Индекс вид, который будет отображаться. В противном случае он будет искать представление Index в PageRouterController.
Мне все еще нужно выяснить, как создать контроллер и его действие, зная только их имена. например Я хотел бы иметь возможность просто позвонить примерно так:
public ActionResult RoutePage(string site, string url)
{
return InvokeAction("Home", "Index");
}
Что должно быть в InvokeAction()? Нужно ли мне передавать какой-либо контекст?
Итак, мне нужно использовать отражение, чтобы вызвать метод действия? Я не знаю имя действия или контроллера, к которому я перенаправляюсь, до времени выполнения. –
Также, как насчет контекста контроллера? Этот метод, похоже, не работает для меня. –
Контекст контроллера будет таким же. Что, кажется, не работает? Может быть, вы можете опубликовать код. – tvanfosson