2

我试图RedirectToAction(actionResult)从我的基本控制器执行,但 IntelliSense 没有显示这种过载。我发现 RedirectToAction 被放置在每个 T4MVC 控制器部分类中。我有点理解为什么它是这样实现的……但是有一个替代实现不是更好吗?这将是 Controller 的扩展方法?或者我的情况有更好的解决方案吗?

4

4 回答 4

3

如果你

有点理解为什么以这种方式实施...

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

    private ActionResult RedirectToAction(ActionResult actionResult)
    {
        var callInfo = actionResult.GetT4MVCResult();
        return RedirectToRoute(callInfo.RouteValueDictionary);
    }
于 2012-06-11T05:10:57.157 回答
1

难点在于RedirectToAction的实现需要调用Controller.RedirectToRoute,它是protected而不是public的。因此,您将无法从扩展方法调用它。

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

于 2012-07-29T03:29:33.453 回答
0

如果您只想让 IntelliSense 工作,您可以创建自己的扩展方法。它将以低于 T4MVC 控制器分部类提供的类成员方法的优先级进行解析,因此它应该参与 IntelliSense,但实际上不会被编译器触及。

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

于 2012-06-10T20:20:23.283 回答
0

这可能会有所帮助。这是我不久前给出的答案,可能是您正在寻找的

重定向

于 2012-06-28T23:47:50.437 回答