我试图从我的基本控制器执行RedirectToAction(actionResult)
,但IntelliSense没有显示此过载。我发现RedirectToAction被放入每个T4MVC控制器的分部类中。我有点理解为什么它是以这种方式实现的...但是,如果有一个替代实现可以作为Controller的扩展方法,那不是更好吗?或者我的案例有更好的解决方案吗?
答案 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)
这可能会有所帮助。这是我回答的答案可能是你正在寻找的答案