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