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

pet*_*ski 4 asp.net-mvc

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

 MyController.MyMethod();
Run Code Online (Sandbox Code Playgroud)

但是在我写完点后,Intellisence没有显示出来.

Ica*_*rus 9

将它放在实用程序类中并使其静态.从你的控制器你需要做的就是:

Utility.SaveImage(...);
Run Code Online (Sandbox Code Playgroud)


Nin*_*Nye 6

使用基本控制器

public abstract class BaseController : Controller
{
    protected virtual void MyMethod()
    {
        // Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

然后您的控制器继承您的基本控制器

public class HomeController : BaseController
{
    public ActionResult Index()
    {
        this.MyMethod();
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以创建一个静态助手类

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

public class HomeController
{
    public ActionResult Index()
    {
        Helper.MyMethod()
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 同意,为了保存图像,帮助类是最好的.我更关注他希望每个控制器都可以使用该方法的事实(而不是所有的控制器). (3认同)