所有控制器都可以使用的一种方法 - 放在哪里?

时间:2012-04-27 11:27:33

标签: asp.net-mvc

在MVC中,例如我有5个不同的控制器文件。在所有这些中,我有一种保存图像的方法。有没有办法将此方法放在一个地方和每个控制器方法来访问它,而不是在每个控制器中写入它? 我试过了

 MyController.MyMethod();

但是在写完点后,Intellisence没有显示它。

2 个答案:

答案 0 :(得分:9)

将它放在实用程序类中并使其成为静态。从您的控制器,您需要做的就是:

Utility.SaveImage(...);

答案 1 :(得分:6)

使用基本控制器

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();
    }
}