现有的RedirectToAction签名是
RedirectToAction(string action, RouteValueDictionary routeValues);
我想做。
RedirectToAction(RouteValueDictionary routeValues);
所以我创建了以下
public static class MvcControllerExtension
{
public static RedirectToRouteResult RedirectToAction
(this Controller controller, RouteValueDictionary routeValues)
{
return controller.RedirectToAction
(routeValues["Action"].ToString(), routeValues);
}
}
但是,该代码的IDE显示Recursive Call
,因为它只能看到自己。
它没有看到这个签名。
我在扩展程序中包含了using System.Web.Mvc;
。
我该如何解决这个问题?感谢。
其他
这是扩展源代码。 请注意递归符号。
答案 0 :(得分:3)
为什么要延期? RedirectToAction
是Controller
类中的辅助方法,那么为什么不在 基本控制器类中创建自己的方法?
public abstract class MyControllerBase : Controller
{
protected RedirectToRouteResult RedirectToAction(RouteValueDictionary routeValues)
{
return RedirectToAction(routeValues["Action"].ToString(), routeValues);
}
}
答案 1 :(得分:0)
MvcControllerExtension的名称空间 - 它必须位于同一名称空间中或具有导入功能。