2012-02-07 49 views
0

コントローラクラスの拡張メソッドをいくつか作成しました。これは、派生コントローラ(ホームコントローラなど)から呼び出すことができます。しかし、私はそれらを視野から呼び出すことはできないようです。 ビュー内でコントローラの拡張メソッドを呼び出す方法はありますか?ビューからコントローラ拡張メソッドを呼び出す

+0

ビューでの拡張メソッドの名前空間が含まれていましたか? – Lester

+0

はい私はしました。メソッドにアクセスできますが、アクションリンクのターゲットとして使用すると呼び出されません。 – mans

答えて

0

拡張メソッドをコントローラアクションとして呼び出そうとしているようです。あなたはそれをすることはできません。

代わりに行う必要があるのは、拡張メソッドを呼び出すアクションを作成することです。ここでは簡単な例です:

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

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

あなたはactionlinkにパラメータとして、それを呼び出したいときに、あなたがFooを使用することができます。

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

ありがとうございます。私の拡張メソッドはActionResultを返し、私のコントローラアクションが取得しているのと同じタイプのパラメータを取得するので、同じ署名、拡張メソッド、および他のコントローラアクションを持つ2つのメソッドを持つことができません。このアイデアは、プロジェクトにインクルードするときに、開発者とのやりとりを必要とせずに、/コントローラを表示するための機能をいくつか提供するライブラリがあるということです(asp.netのコントロールと似ています。 dll)。これを行う最善の方法は何ですか? – mans

+0

ああ、私は理解していると思います。それは複雑なシナリオです。私の最初の考えは、本当にそのデザインが必要かどうかを見極めることです。私が上に持っているものに変更することは、これを行う正しい方法です。私の2番目の考えは、MVCコードを深く見て、拡張メソッドを見つけて呼び出すようにカスタマイズする必要があります。 – Lester

関連する問題