来自基本控制器的RedirectToAction

时间:2012-06-10 19:09:54

标签: asp.net-mvc t4mvc

我试图从我的基本控制器执行RedirectToAction(actionResult),但IntelliSense没有显示此过载。我发现RedirectToAction被放入每个T4MVC控制器的分部类中。我有点理解为什么它是以这种方式实现的...但是,如果有一个替代实现可以作为Controller的扩展方法,那不是更好吗?或者我的案例有更好的解决方案吗?

4 个答案:

答案 0 :(得分:3)

如果你

  

有点明白为什么以这种方式实施......

然后你可以在你的基本控制器中以相同的方式实现它,你很高兴

    private ActionResult RedirectToAction(ActionResult actionResult)
    {
        var callInfo = actionResult.GetT4MVCResult();
        return RedirectToRoute(callInfo.RouteValueDictionary);
    }

答案 1 :(得分:1)

难点在于RedirectToAction的实现需要调用Controller.RedirectToRoute,它是受保护的而不是公共的。因此,您将无法通过扩展方法调用它。

另一个缺点是,即使它有效,您也必须拨打this.RedirectToAction(...)而不是RedirectToAction(...)

答案 2 :(得分:0)

如果您只想使用IntelliSense,则可以创建自己的扩展方法。它的优先级低于T4MVC控制器部分类提供的类成员方法,因此它应该参与IntelliSense,但实际上并没有被编译器触及。

如果你在更高的哲学层面上问“为什么他们这样做?”,那么恐怕我不得不顺从真正的专业人士。

答案 3 :(得分:0)

这可能会有所帮助。这是我回答的答案可能是你正在寻找的答案

Redirects