2012-04-27 6 views
4

MVCでは、例えば私は5つの異なるコントローラファイルを持っています。それらのすべてで、私は画像を保存する方法を持っています。このメソッドを1つの場所に配置し、すべてのコントローラメソッドにアクセスする方法はありますか?すべてのコントローラに書き込むのではなく、 私は すべてのコントローラがアクセスできる1つの方法 - 配置場所

MyController.MyMethod(); 

を試してみました。しかし、私は、ドットの書き込み後Intellisenceはそれを示していません。

答えて

9

は、ユーティリティクラスに入れて

public class HomeController : BaseController 
{ 
    public ActionResult Index() 
    { 
     this.MyMethod(); 
     return View(); 
    } 
} 

は、別の方法としては、静的なヘルパークラスを作成することができ、あなたのベースコントローラ

public abstract class BaseController : Controller 
{ 
    protected virtual void MyMethod() 
    { 
     // Do stuff 
    } 
} 

は、その後、あなたのコントローラが継承するベースコントローラを使用します静的にします。お使いのコントローラからすべてを行う必要があるようなものです:

Utility.SaveImage(...); 
+0

ベースコントローラーを使用するよりもSRPに忠実です+1 –

+0

@Icarusしかし、このユーティリティクラスはどこに置くのですか? Contentsフォルダには? –

+0

@スレセ私は別のフォルダに入れます。典型的な名前はUtils、Common、Core、Sharedなどです。私はJavaの規約に従う傾向があります。クラスの名前空間がSharedの場合は、Sharedというフォルダに入れます。 – Icarus

5

public static class Helper 
{ 
    public static void MyMethod() 
    { 
     // Do stuff 
    } 
} 

public class HomeController 
{ 
    public ActionResult Index() 
    { 
     Helper.MyMethod() 
     return View(); 
    } 
} 
+0

ないdownvoteまたはそのような...しかし、画像を保存するresposibilityは最高のそれ自身のクラスではなく、ベースコントローラに置かれると思います。イカルスによると –

+2

以下で合意しました。イメージを保存するために、ヘルパークラスが最適です。私は、メソッドを各コントローラに利用できるようにしたいという事実にもっと集中していました(すべてではありません)。 – NinjaNye

関連する問題