【问题标题】:ASP.NET MVC Redirect to action without a physical redirectASP.NET MVC 重定向到没有物理重定向的操作
【发布时间】:2011-07-23 19:31:03
【问题描述】:

是否可以通过动作、动作过滤器或以任何其他方式在另一个控制器中执行相同的另一个动作而不进行物理重定向。

这样做的原因是我有一个动态分页系统,例如,用户将在其中加载一个 url

/1/some-page-title

这个 url 被映射到控制器“Home”和动作“Element”,然后这个动作将从数据库中加载元素 id 为“1”的行。根据数据库中元素的数据,页面将呈现为联系表格、图片库等。 现在我可以映射路径了

/Page/1/some-title/ will render a normal html page,
/Contact/1/some-title/ will render a contact form
/Gallery/1/some-title/ will render a gallery

但我希望路径简单。

【问题讨论】:

    标签: asp.net-mvc-3 redirect


    【解决方案1】:

    这个答案有问题,我已经很久没有用 ASP MVC 做任何事情了,所以我实际上并不知道问题是什么。 很遗憾,我无法删除已接受的答案。
    所以,我按原样回答,如果你真的能回答这个问题,或者做得更好,请这样做。

    是的,真的很简单:)

    假设你在控制器 C 动作 A 中。你想“重定向”到控制器 B 动作 Z,只需从当前控制器调用另一个控制器动作,返回它的结果。

    public ActionResult A()
    {
        return B.Z()
    }
    

    【讨论】:

    • 是的,我知道这种方式,但我希望有一种方法可以让系统为我进行重定向,所以它会触发过滤器并执行注入等等。
    • 我不完全确定这是如何被接受为答案并随后被赞成的,但是没有人评论他在没有实例化控制器的情况下调用动作这一事实?
    • kehrk:自从回答这个问题以来,我已经 3 年多没有做过任何 ASP MVC 了,这一切都从我的脑海中消失了(事实上我不记得实际回答过这个问题)。感谢您的批评,我会再看看这个并更新答案。
    • @kehrk:实际上,如果您为此提供正确答案,我会投票赞成并删除我的答案。
    • 也许返回 this.Z();避免混淆
    【解决方案2】:

    您可能正在寻找Html.RenderAction or Html.Action。但是,这些是在视图中使用的,而不是在控制器中使用的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      相关资源
      最近更新 更多