2012-04-27 88 views
4

在MVC中,例如我有5個不同的控制器文件。在他們所有人中,我都有一種保存圖像的方法。有沒有辦法把這個方法放在一個地方,每個控制器的方法來訪問它,而不是寫在每個控制器中? 我試圖所有控制器都可以訪問的一種方法 - 放在哪裏?

MyController.MyMethod(); 

但Intellisence沒有顯示它我寫點之後。

回答

9

把它放在一個實用工具類並使其靜態。從你的控制器所有你需要做的是一樣的東西:

Utility.SaveImage(...); 
+0

比使用基本控制器更好地遵守SRP +1 – 2012-04-27 11:35:24

+0

@Icarus但是我在哪裏可以放置該Utility類?在內容文件夾中? – 2012-04-27 11:39:13

+0

@Srcee我會把它放在一個單獨的文件夾中。典型的名字是:Utils,Common,Core,Shared等。我傾向於遵循Java約定,如果類的名字空間是Shared,那麼我會把它放在一個名爲Shared的文件夾中。 – Icarus 2012-04-27 11:48:32

5

使用基本控制器

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

然後你的控制器繼承你的基地控制器

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

或者你可以創建一個靜態輔助類

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

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

沒有downvote或任何這樣的......但想保存圖像的責任心會最好放置在一個類它自己的,而不是基本控制器。按照以下伊卡洛斯 – 2012-04-27 11:34:58

+2

同意,爲了保存圖像,助手類將是最好的。我更關注的是他希望該方法可用於每個控制器(而不是所有)的事實。 – NinjaNye 2012-04-27 11:40:48

相關問題