首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET MVC控制器生命周期

ASP.NET MVC控制器生命周期
EN

Stack Overflow用户
提问于 2009-11-19 22:45:40
回答 3查看 35.5K关注 0票数 69

据我所知,控制器的构造函数不会在每个web请求期间被调用。假设这是真的,那么控制器的生命周期是什么?是否在应用程序启动时“构造”,然后缓存并使用每个web请求注入的requestcontext进行调用?

为了清楚起见,我并不是在问如何模拟构造函数的行为,我使用OnActionExecuting事件来启动在构造函数中通常要做的事情。此外,我在控制器上使用构造函数进行单元和系统测试。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-19 23:03:43

如果您使用default controller factory,将为每个请求构造一个新实例,这就是它应该采用的方式。控制器不应该在不同的请求之间共享。但是,您可以编写一个自定义工厂来管理控制器的生命周期。

票数 92
EN

Stack Overflow用户

发布于 2009-11-19 23:10:49

恐怕你的理解是错的。控制器(应该是一个非常薄的轻量级类,并且不能有任何会话过期状态)实际上是为每个web请求动态构建的。另外,控制器实例如何才能特定于某个视图?

所以没有所谓的“生命周期”(除了请求的生命周期)……

票数 16
EN

Stack Overflow用户

发布于 2014-04-30 17:29:22

为您执行的每个请求创建一个控制器。让我们举个例子。

   public class ExampleController : Controller{
           public static userName;

            public void Action1(){//do stuff}
            public void Action2(){//do stuff}
            public void AssignUserName(string username){
                 userName = username;

            }
           public string GetName(){ return userName;}


   }

现在,您可以从传递用户名的视图中调用控制器。不要期望获得您在下一个请求中设置的userName。它将返回null。因此,对于每个请求,都会创建一个新的控制器。您不必在MVC中的任何位置实例化控制器,就像从类中实例化对象一样。简单地说,你没有控制器对象内存指针来调用它,就像你对其他对象做的那样。

转到此链接。MVC控制器的生命周期有一个很好的解释。

ASP.Net MVC - Request Life Cycle

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1763775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档