我认为我对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/