让我们举一个非常简单的例子,使用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.**目前这两种方法都很好,但我只是想了解选择一种方法的来龙去脉
4条答案
按热度按时间uwopmtnx1#
基本的页面生命周期将回答您的问题全文:http://www.codeproject.com/KB/aspnet/ASPDOTNETPageLifecycle.aspx
(来源:codeproject.com)
检查相同的问题答案:页。请求行为
r7xajy2e2#
任何一个都可以,因为你通过调用response.clear()和response.end()基本上放弃了页面的生命周期。从技术上讲,你甚至可以把代码放在prerender中,它就可以工作了。通过访问Response对象,你基本上是越过了页面的头部,并在中间将其切断,这样你就可以执行一个更简单的任务。
我假设你根本不想要页面生命周期,只是想从这个页面返回JSON?如果是这样,我强烈建议将其实现为泛型处理程序(ashx)。在这种情况下,您只需使用context.Request[“limit”]和context.Response.Write在您的Process方法中。这样做的好处是您没有所有的开销。NET准备页类并启动页生命周期,而是使用用于正在执行的任务的文件。
理解页面生命周期是很好的,如其他答案所示,但实际上您根本没有使用它,您最好完全远离页面类。
uqdfh47h3#
页面生命周期只有在页面元素(控件)的上下文中才有意义,所以我看不出你的情况有什么不同,因为你的页面中没有任何其他的子控件--这是完全不相关的。
但真实的的问题是如果您页面中没有任何HTML呈现(只有数据序列化),为什么要选择使用常规的.aspx页面?
Web服务是这个场景的理想选择,而且您会惊讶于最终获得的性能提升。
vfh0ocws4#
你可以很好的使用Page Init方法。但是如果你的页面中有控件,并且想要访问这些控件的任何属性,那么最好使用Page load事件,但是在你的情况下,你不需要使用page load事件。
您可以浏览Asp.Net Page Life cycle here以更好地了解要使用哪个事件。