我认为我对MVC的某些理解存在致命缺陷。我一直认为 Controller 中的 Action 方法是无状态的,而 Controller 本身是无状态的。

那么,是否在每次调用任何操作时都创建了 Controller 的新实例?

最佳答案

将为传入的每个请求创建一个新的 Controller 实例。请考虑以下事项:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return MoreIndex();
    }

    public ActionResult MoreIndex()
    {
        return View();
    }
}

传入/Home/Index的请求将输入两个操作,但是只会创建一个 Controller 。传入/Home/MoreIndex的请求将输入一个操作并创建一个 Controller 。现在,没有什么可以阻止您手动创建 Controller 并使它保持 Activity 状态并重新使用它。但这绝不会出现在来自HTTP的实际请求的上下文中。

关于c# - Action 是无状态的,但 Controller 是无状态的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17726073/

10-16 23:59