asp.net-mvc - 在 ASP.NET MVC 中,返回 RedirectToAction 时保留 URL

标签 asp.net-mvc transfer redirecttoaction

我有一个 Action 方法,根据传递给它的内容,我想重定向到另一个 Controller 中的另一个 Action 。 Action 和 Controller 名称在运行时确定。

如果我返回 RedirectToAction(),它将强制重定向并更改浏览器中的 URL。我想要的是像 TransferToAction() 这样的东西,它可以将当前请求的处理转移到另一个 Action ,而无需进行重定向。我似乎记得在早期的预览中有一个这样的方法,但我似乎无法在 ASP.NET MVC 的 RC 中找到它。

你知道我会怎么做吗?

更新

我添加了以下路线:

routes.MapRoute(
    "PageRouter",
    "{site}/{*url}",
    new { controller = "PageRouter", 
          action = "RoutePage", site = "", url = "" }
);

以及 PageRouter Controller 操作 RoutePage:

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 中设置 Controller 和操作才能呈现 Home Index View 。否则,它将在 PageRouterController 中寻找索引 View 。

我仍然需要弄清楚如何只知道它们的名称来创建 Controller 及其操作。例如我希望能够像这样调用:

public ActionResult RoutePage(string site, string url)
{
    return InvokeAction("Home", "Index");
}

InvokeAction() 中应该包含什么?我需要传递任何上下文吗?

最佳答案

您应该能够直接调用其他方法,假设它返回一个 ViewResult,它将呈现该 View 以响应请求并且 url 不会更改。请注意,您将负责确保其他方法所需的所有数据都可用。例如,如果您的其他方法需要一些未提供的表单参数,您可能需要构造一个合适的 FormCollection 并将 Controller 的 ValueProvider 设置为基于您的 FormCollection 的 ValueProvider。对于该方法所需的任何参数也是如此。

关于asp.net-mvc - 在 ASP.NET MVC 中,返回 RedirectToAction 时保留 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/544000/

相关文章:

c# - 使用 asp.net 生成图表

mysql - 将旧的 3.23.49 MySQL 数据库转移到 5.0.51 MySQL 数据库 - 以 ANSI 和 UTF-8 编码

ios - iPhone SDK : GameKit and large files + connection lost

ruby-on-rails - ruby - 重定向到(网址,:myparam => 'abc' )

asp.net-mvc - Asp.NET MVC 强类型 Controller

javascript - 如何在mvc4应用程序中通过jquery中的任何表达式管理元素类名?

asp.net - 异步/等待和异步 Controller ?

c# - 如何从 SQL 查询 C# 获取所有值

asp.net - ASP.Net 中的 TransferRequest 与 Transfer

asp.net-mvc - 区域之间的 RedirectToAction?