如何为RedirectToAction创建扩展?

时间:2011-11-02 01:03:27

标签: visual-studio-2010 asp.net-mvc-3 extension-methods

现有的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,因为它只能看到自己。

它没有看到这个签名。 enter image description here

我在扩展程序中包含了using System.Web.Mvc;

我该如何解决这个问题?感谢。

其他

这是扩展源代码。 请注意递归符号。

(抱歉,上传图片到imgur.com时出现问题。很快就会重试。)

2 个答案:

答案 0 :(得分:3)

为什么要延期? RedirectToActionController类中的辅助方法,那么为什么不在 基本控制器类中创建自己的方法?

public abstract class MyControllerBase : Controller
{
   protected RedirectToRouteResult RedirectToAction(RouteValueDictionary routeValues)
   {
      return RedirectToAction(routeValues["Action"].ToString(), routeValues);
   }
}

答案 1 :(得分:0)

MvcControllerExtension的名称空间 - 它必须位于同一名称空间中或具有导入功能。