Загрузка страницы или инициализация страницы

давайте очень простой пример при использовании 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

alt text

проверить тот же вопрос ответ:


жизненный цикл страницы имеет значения только в контексте элементов страницы (элементов управления), поэтому я не вижу никаких различий в вашем случае, так как у вас нет других дочерних элементов управления на Вашей странице - это совершенно не имеет значения.

но вот реальный вопрос: если у вас нет рендеринга html на Вашей странице (только сериализация данных), почему вы решили работать с регулярным .aspx-страницы?

веб-служба является идеальным кандидатом для этого сценария. И вы будете удивлены, как в конце концов вы добьетесь значительного повышения производительности.


вы можете очень хорошо использовать метод инициализации страницы. Но если у вас есть элементы управления на странице и вы хотите получить доступ к любому свойству этих элементов управления, лучше использовать событие загрузки страницы, но в вашем случае вам не нужно использовать событие загрузки страницы.

вы можете пройти через Asp.Net страница жизненного цикла здесь чтобы лучше понять какое событие использовать.