Загрузка страницы или инициализация страницы
давайте очень простой пример при использовании 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
отсутствие некоторой сортировки метода к моменту его вызова?
П. С. в настоящее время работает нормально в обоих методах, но я просто хочу понять все тонкости выбора одного метода над другим
4 ответов
любой из них будет работать, потому что вы по существу выбрасываете жизненный цикл страницы, вызывая response.Clear() и ответ.Конец.)( Технически вы могли бы даже зайти так далеко, как положить этот код в prerender, и он будет работать. Обращаясь к объекту ответа, вы в основном переходите через начало страницы и отключаете его на середине шага, чтобы выполнить гораздо более простую задачу.
Я предполагаю, что вы просто не хотите жизненного цикла Страницы вообще и просто хотите вернуть JSON из эта страница? Если это так, я настоятельно рекомендую реализовать его как универсальный обработчик (ashx). В этом случае вы просто используете контекст.Запрос ["ограничение"] и контекст.Ответ.Напишите в своем методе процесса. Преимущество этого заключается в том, что у вас нет всех накладных расходов .NET, подготавливающих класс страницы и запускающих жизненный цикл страницы, и вместо этого вы используете файл, предназначенный для выполняемой задачи.
приятно понимать жизненный цикл страницы, как показано в другие ответы, но реально вы не используете его вообще, и вам было бы лучше полностью уйти от класса page.
основной жизненный цикл страницы ответит на ваш вопрос Полная статья:http://www.codeproject.com/KB/aspnet/ASPDOTNETPageLifecycle.aspx
проверить тот же вопрос ответ:
жизненный цикл страницы имеет значения только в контексте элементов страницы (элементов управления), поэтому я не вижу никаких различий в вашем случае, так как у вас нет других дочерних элементов управления на Вашей странице - это совершенно не имеет значения.
но вот реальный вопрос: если у вас нет рендеринга html на Вашей странице (только сериализация данных), почему вы решили работать с регулярным .aspx-страницы?
веб-служба является идеальным кандидатом для этого сценария. И вы будете удивлены, как в конце концов вы добьетесь значительного повышения производительности.
вы можете очень хорошо использовать метод инициализации страницы. Но если у вас есть элементы управления на странице и вы хотите получить доступ к любому свойству этих элементов управления, лучше использовать событие загрузки страницы, но в вашем случае вам не нужно использовать событие загрузки страницы.
вы можете пройти через Asp.Net страница жизненного цикла здесь чтобы лучше понять какое событие использовать.