在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