2012-10-02 50 views
0

我想定義一個擴展控制器方法。這可能嗎?當我嘗試它,它編譯,但我收到了404,而不是200如何創建ASP.NET MVC控制器擴展?

public static ActionResult MyMethod(this Controller) 
    { 
     return new EmptyResult(); 
    } 

回答

2

你不能有一個靜態的操作方法,所以這是不行的。

你可以做的反而是創建一個基控制器類與公共實例方法:

public class BaseController : Controller 
{ 
    public ActionResult MyMethod() 
    { 
     return new EmptyResult(); 
    } 
} 
+0

我試圖創建處理一些網絡掛接,我想通過的NuGet使可用的模塊。如果我要求人們從我的基類繼承,它將減少使用,因爲你只能從一個類繼承。 – Doug

+0

在這種情況下,您可能需要考慮一個[ActionFilter](http://msdn.microsoft.com/en-us/library/system.web.mvc.actionfilterattribute(v = vs.108).aspx)。 – jrummell

+0

謝謝。看起來只是寫一個HttpHandler可能是這裏的一種方式,因爲它更具可擴展性。但你確實按照問題回答了這個問題。 – Doug