2012-02-07 43 views
0

我爲控制器類創建了一些擴展方法,我可以從派生控制器(如家庭控制器)調用它們。但似乎我無法從視角打電話給他們。 有沒有辦法在視圖中調用控制器的擴展方法?從視圖調用控制器擴展方法

+0

是否包含在該視圖擴展方法的命名空間? – Lester 2012-02-07 17:16:58

+0

是的,我做到了。我可以訪問該方法,但是當我將它用作動作鏈接的目標時,它不會被調用。 – mans 2012-02-07 17:22:29

回答

0

它看起來像你試圖調用一個擴展方法作爲控制器操作。你不能那樣做。

您需要做的是創建一個調用擴展方法的操作。這裏有一個簡單的例子:

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

public static void ExtensionMethod(this Controller controller) 
{ 
    ... 
} 

所以,當你想調用它作爲參數傳遞給了actionlink,您可以使用Foo

@Html.ActionLink("Foo"); 
+0

謝謝。我的擴展方法返回ActionResult,並獲取與我的控制器操作相同類型的參數,所以我無法做到這一點,因爲我有兩個方法具有相同的簽名,一個擴展方法和另一個控制器操作。這個想法是,我有一個庫,當它包含到一個項目中時,它提供了一些功能來查看/控制器,而不需要開發人員的交互(類似於asp.net中的控件,將其放在頁面中,並駐留在DLL)。做這個的最好方式是什麼? – mans 2012-02-08 09:27:26

+0

啊我想我明白了。這是一個複雜的情況。我的第一個想法是看看你是否真的需要這種設計。改變它到我上面的是正確的方式做到這一點。我的第二個想法就是......你必須深入研究MVC代碼並定製它來查找和調用你的擴展方法。 – Lester 2012-02-08 13:40:34

相關問題