在MVC中,例如我有5个不同的控制器文件。在他们所有人中,我都有一种保存图像的方法。有没有办法把这个方法放在一个地方,每个控制器的方法来访问它,而不是写在每个控制器中? 我试图所有控制器都可以访问的一种方法 - 放在哪里?
MyController.MyMethod();
但Intellisence没有显示它我写点之后。
在MVC中,例如我有5个不同的控制器文件。在他们所有人中,我都有一种保存图像的方法。有没有办法把这个方法放在一个地方,每个控制器的方法来访问它,而不是写在每个控制器中? 我试图所有控制器都可以访问的一种方法 - 放在哪里?
MyController.MyMethod();
但Intellisence没有显示它我写点之后。
把它放在一个实用工具类并使其静态。从你的控制器所有你需要做的是一样的东西:
Utility.SaveImage(...);
使用基本控制器
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();
}
}
没有downvote或任何这样的......但想保存图像的责任心会最好放置在一个类它自己的,而不是基本控制器。按照以下伊卡洛斯 – 2012-04-27 11:34:58
同意,为了保存图像,助手类将是最好的。我更关注的是他希望该方法可用于每个控制器(而不是所有)的事实。 – NinjaNye 2012-04-27 11:40:48
比使用基本控制器更好地遵守SRP +1 – 2012-04-27 11:35:24
@Icarus但是我在哪里可以放置该Utility类?在内容文件夹中? – 2012-04-27 11:39:13
@Srcee我会把它放在一个单独的文件夹中。典型的名字是:Utils,Common,Core,Shared等。我倾向于遵循Java约定,如果类的名字空间是Shared,那么我会把它放在一个名为Shared的文件夹中。 – Icarus 2012-04-27 11:48:32