Page_Load或Page_Init

bal*_*dre 11 asp.net time load

让我们用一个非常简单的例子说明如何使用jQuery对页面进行ajaxify ...

$.load("getOrders.aspx", {limit: 25}, function(data) {
    // info as JSON is available in the data variable
});
Run Code Online (Sandbox Code Playgroud)

并在ASP.NET(HTML部分)页面(只有一行)

<%@ Page Language="C#" AutoEventWireup="true" 
         CodeFile="getOrders.aspx.cs" Inherits="getOrders" %>
Run Code Online (Sandbox Code Playgroud)

并在ASP.NET(Code Behind)页面中

public partial class getOrders : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string lmt = Request["limit"];
        List<Orders> ords = dll.GetOrders(limit);


        WriteOutput( Newtonsoft.Json.JsonConvert.SerializeObject(ords) );
    }

    private void WriteOutput(string s) 
    {
        Response.Clear();
        Response.Write(s);
        Response.Flush();
        Response.End();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是

应该是吗?

protected void Page_Load(object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)

要么

protected void Page_Init(object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)

因此,我们可以节省几毫秒,因为我们实际上不需要处理页面的事件,或者Page_Init在调用方法时缺少某种方法的排序?

PS目前在这两种方法中都可以正常工作,但我只是想了解选择一种方法而不是另一种方法的来龙去脉

Pra*_*ana 11

基本页面生命周期将回答您的问题全文:http://www.codeproject.com/KB/aspnet/ASPDOTNETPageLifecycle.aspx

替代文字

检查相同的问题答案:Page.Request行为


fyj*_*ham 8

任何一个都可以工作,因为你实际上是通过调用response.Clear()和response.End()来抛弃页面生命周期.从技术上讲,你甚至可以把这些代码放在prerender中,它会起作用.通过访问Response对象,您基本上会越过页面的头部并在中间跨步切断它,这样您就可以执行更简单的任务.

我假设您根本不想要页面生命周期,只是想从此页面返回JSON?如果是这样,我强烈建议将其作为通用处理程序(ashx)实现.在这种情况下,您只需在Process方法中使用context.Request ["limit"]和context.Response.Write.这样做的好处是,您没有.NET准备页面类和启动页面生命周期的所有开销,而是使用专门用于您正在执行的任务的文件.

理解页面生命周期很好,如其他答案所示,但实际上你根本就没有使用它,你最好完全离开页面类.