Model view controller 从视图调用控制器扩展方法

Model view controller 从视图调用控制器扩展方法,model-view-controller,methods,Model View Controller,Methods,我为控制器类创建了一些扩展方法,可以从派生控制器(例如主控制器)调用它们。但我似乎无法从视野中呼唤他们。 有没有办法在视图中调用控制器的扩展方法 看起来您正试图将扩展方法作为控制器操作调用。你不能那样做 您需要做的是创建一个调用扩展方法的操作。下面是一个简短的例子: public ActionResult Foo() { this.ExtensionMethod(); return View(); } public static void ExtensionMethod(thi

我为控制器类创建了一些扩展方法,可以从派生控制器(例如主控制器)调用它们。但我似乎无法从视野中呼唤他们。
有没有办法在视图中调用控制器的扩展方法

看起来您正试图将扩展方法作为控制器操作调用。你不能那样做

您需要做的是创建一个调用扩展方法的操作。下面是一个简短的例子:

public ActionResult Foo()
{
    this.ExtensionMethod();
    return View();
}

public static void ExtensionMethod(this Controller controller)
{
    ...
}
因此,当您想将其作为
actionlink
的参数调用时,可以使用
Foo

@Html.ActionLink("Foo");

是否在视图中包含扩展方法的命名空间?是的。我可以访问该方法,但当我将其用作actionlink的目标时,它不会被调用。谢谢。我的扩展方法返回ActionResult,还获取控制器操作获取的相同类型的参数,因此我无法执行此操作,因为我有两个具有相同签名的方法,一个扩展方法和另一个控制器操作。我的想法是,我有一些库,当包含到一个项目中时,它提供了一些查看/控制的功能,而无需开发人员交互(类似于asp.net中的控件,您可以将它放到页面中,它驻留在dll中)。最好的办法是什么?啊,我想我明白了。这是一个复杂的场景。我的第一个想法是看看你是否真的需要这种设计。把它改成我上面提到的是正确的方法。我的第二个想法是。。。您必须深入研究MVC代码并对其进行定制,以找到并调用您的扩展方法。