2012-04-27 43 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

相关问题