asp.net 页面加载或页面初始化

jgzswidk  于 2023-03-24  发布在  .NET
关注(0)|答案(4)|浏览(194)

让我们举一个非常简单的例子,使用jQuery来ajaxify我们的页面。

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

和ASP.NET(HTML部分)页 (只有一行)

<%@ Page Language="C#" AutoEventWireup="true" 
         CodeFile="getOrders.aspx.cs" Inherits="getOrders" %>

和ASP.NET(代码隐藏)页中

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();
    }
}

我的问题是
应该吗

protected void Page_Load(object sender, EventArgs e)

protected void Page_Init(object sender, EventArgs e)

因此,我们可以保存一些毫秒,因为我们实际上不需要处理页面的事件,或者Page_Init在调用时会缺少一些方法的排序吗?

**P.S.**目前这两种方法都很好,但我只是想了解选择一种方法的来龙去脉

uwopmtnx

uwopmtnx1#

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

(来源:codeproject.com
检查相同的问题答案:页。请求行为

r7xajy2e

r7xajy2e2#

任何一个都可以,因为你通过调用response.clear()和response.end()基本上放弃了页面的生命周期。从技术上讲,你甚至可以把代码放在prerender中,它就可以工作了。通过访问Response对象,你基本上是越过了页面的头部,并在中间将其切断,这样你就可以执行一个更简单的任务。
我假设你根本不想要页面生命周期,只是想从这个页面返回JSON?如果是这样,我强烈建议将其实现为泛型处理程序(ashx)。在这种情况下,您只需使用context.Request[“limit”]和context.Response.Write在您的Process方法中。这样做的好处是您没有所有的开销。NET准备页类并启动页生命周期,而是使用用于正在执行的任务的文件。
理解页面生命周期是很好的,如其他答案所示,但实际上您根本没有使用它,您最好完全远离页面类。

uqdfh47h

uqdfh47h3#

页面生命周期只有在页面元素(控件)的上下文中才有意义,所以我看不出你的情况有什么不同,因为你的页面中没有任何其他的子控件--这是完全不相关的。
但真实的的问题是如果您页面中没有任何HTML呈现(只有数据序列化),为什么要选择使用常规的.aspx页面?
Web服务是这个场景的理想选择,而且您会惊讶于最终获得的性能提升。

vfh0ocws

vfh0ocws4#

你可以很好的使用Page Init方法。但是如果你的页面中有控件,并且想要访问这些控件的任何属性,那么最好使用Page load事件,但是在你的情况下,你不需要使用page load事件。
您可以浏览Asp.Net Page Life cycle here以更好地了解要使用哪个事件。

相关问题