什么是进入asp.net的主要观点?

时间:2011-03-01 14:49:59

标签: asp.net

与java一样,入口点为public static void main(String[] args)。使用C#的ASP.NET的切入点是什么?通常,我看到页面加载方法,是入口点吗?

asp.net是否遵循一些不同的标准?

3 个答案:

答案 0 :(得分:8)

您需要查看ASP.NET生命周期:

http://msdn.microsoft.com/en-us/library/ms178472.aspx

答案 1 :(得分:7)

asp.net中没有“主要观点”。您在asp.net中将其视为“主要”的是已经为您编写的代码。相反,您继承了一个基类(“Page”)。作为其中的一部分,您可以(但不必)实现多个事件处理程序。通过构建页面的过程,Asp.Net将提升这些事件供您处理。按顺序运行这些事件的过程称为page lifecycle

对于您的情况,有几个选项取决于您希望主要方法执行的操作:

  • 处理Global.asax文件中的Application_Start事件
  • Page_PreInit事件(页面生命周期中的第一个事件)
  • Page_Load事件(在页面生命周期中处理的最常见事件)

答案 2 :(得分:3)

你说错了。

public static void main()也是一种Java方法,用作控制台应用程序的入口点,与C#完全相同。

你可能想要比较servlets / JSP和ASP.NET,不是吗?

Servlets与IHttpHandler

从概念上讲,它们是相同的。它们也是接口。它们的配置不同(WEB.xml VS Web.config或.ashx文件),但它们的入口点“几乎”相同。

的Servlet

Init()
Service()
Destroy()

的IHttpHandler:

ProcessRequest() <<--- does all the things
IsReusable {get;} <<--- optional

JSP与ASP.NET页面

如果你定义了一个构造函数,或者覆盖了InitializeFramework()方法,那么你就有了一个起点(或者至少是一个断点,几乎是在执行的最初阶段),但不是切入点。

Pageimplements IHttpHandler,如果你在.NET世界中允许我使用一些Java语法,但你什么也看不见。您可能希望深入了解其他用户链接的页面生命周期。基本上解释一下,Page将其完整的生命周期封装在事件中,类似于使用VHDL组件时的时钟滴答。

执行似乎是而不是并发,但由于您无法知道控件将引发同一事件的确切顺序,您可以将其作为您不能使用的VHDL示例在下一个时钟滴答之前读取注册表的值。

有几个事件:这是执行顺序中最重要的事件

  • 初始化:页面已初始化,GET,POST和cookie数据可用。如果覆盖,则应初始化webapp上下文(即设置数据库连接)
  • 加载(PreLoad和LoadComplete):页面加载UI数据并在需要时恢复页面上显示的控件状态。如果在init中设置数据库连接,则不应在PreLoad之前使用它们以确保不会出现异常。这同样适用于序列PreLoad-&gt; Load-&gt; LoadComplete。
  • DataBind:数据绑定控件从数据库,文件或其他任何内容加载数据(即表格显示数据)
  • 验证:如果您使用验证器,则会处理其业务逻辑以确定页面是否有效。这里没有进一步的解释
  • 回发处理:如果单击按钮,则执行服务器端代码
  • PreRender(和PreRenderComplete):页面已准备好呈现为HTML。通常将内部数据存储到名为ViewState的集合中,我在此不再进一步解释。通常,您将根据页面的状态确定一些与数据相关的操作和/或决定是否在页面上呈现或不呈现某些控件。例如,如果你有一个CAPTCHA并且用户解决了这个谜题,你就不会再渲染它了
  • 渲染:实际上不是程序化事件,但页面会呈现为HTML
  • Dispose:资源被释放,与Java中的Destroy
  • 一样