< ...
Здравствуйте, читатели. Нашел тут небольшой список вопросов по ASP.NET с предполагаемыми ответами. Решил перенести сюда тоже, возможно, кому-то пригодятся. Ссылка на оригинал в конце поста. За ответы зуб не дам, я их немного изменил и дополнил. На собеседованиях по ASP.NET действительно задавали подобные вопросы. Так что, если ответы вам не нравятся изучайте google и msdn...
1. Зачем используется WebMethods на страницах ? В отличие от использования в веб сервисах, на страницах ASP.NET AJAX атрибут [WebMethod] указывает на методы, которые могут быть вызваны с клиента (из javascript-а, например).
Подробнее об этом можно прочитать здесь
2. Что такое MasterPage и зачем они ? Главные страницы ASP.NET позволяют создавать последовательную структуру страниц в приложении. Одна главная страница определяет вид, наполнение и стандартное поведение для всех страниц (или группы страниц) приложения. Затем можно создавать отдельные страницы содержимого, включающие содержимое, которое необходимо отобразить. Когда пользователи запрашивают страницу содержимого, выходная страница представляет собой сочетание структуры главной страницы и содержимого со страницы содержимого.
Главная страница представляет собой файл ASP.NET с расширением MASTER (например MySite.master) с предопределенной структурой, которая может включать статический текст, элементы HTML и серверные элементы управления.Главная страница обозначается особой директивой @ Master, заменяющей директиву @ Page, которая используется для обычных страниц .aspx.Эта директива выглядит следующим образом:
<%@ Master Language="C#" %>
Директива @ Master может включать практически все директивы, которые могут содержаться в директиве @ Control. Например, следующая директива главной страницы включает имя файла с выделенным кодом и назначает имя класса главной странице:
<%@ Master Language="C#" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
Кроме директивы @ Master, главная страница также содержит все элементы HTML верхнего уровня для страницы, такие как html, head и form.Например, в качестве структуры главной страницы можно использовать таблицу, элемент img для эмблемы компании, статический текст для уведомления об авторских правах и серверные элементы управления для создания стандартной системы переходов по веб-узлу.На главной странице можно использовать любые элементы HTML и ASP.NET.
Кроме статического текста и элементов управления, используемых на всех страницах, главная страница содержит элементы управления ContentPlaceHolder.Эти элементы управления — "местозаполнители" определяют области, в которых будет отображаться заменяемое содержимое.Заменяемое содержимое, в свою очередь, определяется на страницах содержимого.После определения элементов управления ContentPlaceHolder главная страница может выглядеть следующим образом:
<%@ Master Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server" >
<title>Master page title</title>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td><asp:contentplaceholder id="Main" runat="server" /></td>
<td><asp:contentplaceholder id="Footer" runat="server" /></td>
</tr>
</table>
</form>
</body>
</html>
Содержимое для элементов управления — "местозаполнителей" на главной странице определяется путем создания отдельных страниц содержимого, которыми являются страницы ASP.NET (ASPX-файлы и файлы с выделенным кодом), связанные с определенной главной страницей.Связывание осуществляется в директиве @ Page страницы содержимого путем включения атрибута MasterPageFile, указывающего на используемую главную страницу.Например, страница содержимого может иметь следующую директиву @ Page, связывающую ее со страницей Master1.master:
<%@ Page Language="C#" MasterPageFile="~/MasterPages/Master1.master" Title="Content Page"%>
На странице содержимого содержимое создается путем добавления элементов управления Content и сопоставления их с элементами управления ContentPlaceHolder на главной странице.Например, главная страница может содержать "местозаполнители" содержимого Main и Footer.На странице содержимого можно создать два элемента управления Content: один сопоставляется с элементом управления ContentPlaceHolderMain, а второй — с элементом управления ContentPlaceHolderFooter
После создания элементов управления Content можно добавить в них текст и элементы управления.На странице содержимого все, что не находится внутри элемента управления Content (за исключением блоков скрипта для серверного кода), приводит к возникновению ошибки.Все задачи, выполняемые на странице ASP.NET, могут быть выполнены на странице содержимого.Например, можно создать содержимое для элемента управления Content с помощью серверных элементов управления и запросов к базам данных или других динамических механизмов.
Страница содержимого может выглядеть следующим образом:
<% @ Page Language="C#" MasterPageFile="~/Master.master" Title="Content Page 1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
Main content.
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Footer" Runat="Server" >
Footer content.
</asp:content>
Директива @ Page связывает страницу содержимого с определенной главной страницей и определяет заголовок для страницы, которая будет объединена с главной.Обратите внимание, что страница содержимого не содержит разметки вне элементов управления Content.(Главная страница должна содержать элемент head с атрибутом runat="server", чтобы установка заголовка могла быть выполнена во время выполнения.)
Можно создать несколько главных страниц и определить различную разметку для различных частей узла, а также определенный набор страниц содержимого для каждой главной страницы.
3. Жизненый цикл обработки страницы (Page processing life cycle.) - User->Request page->Browser->WebServer
- Step 1 (page request). Compile page or Pull it from cache
- Step 2 (start). Set Request and Response, determine IsPostBack
- Step 3 (page init). Initialize page controls (but not their properties). Apply page theme.
- Step 4 (load). If PostBack, load control properties from view state
- Step 5 (validation). Validate page and validator controls
- Step 6 (PostBack event handling). Call Control event handlers (for PostBack requests)
- Step 7 (rendering). Save view state
- WebServer->Browser->User
- Step 8 (unload). Unload request and response. Perform cleanup. Disacard the page
4. События обработки страницы (Page Life Cycle Events) - PreInit. Первый event используется для указания MasterPage или Темы из кода, также для создания динамических контролов.
- Init. Вызывается после инициализации каждого контрола
- InitComplete. Вызыватся после инициализации страницы и всех контролов.
- PreLoad. Полезен для операций после инициализации, но до загрузки ViewState.
- Load. Страница инициализирована и состояние реконструровано, сначала вызывается для страницы, потом для контролов на ней. Код обычно проверяет IsPostBack и затем инициализирует свойства контролов.
- Control (PostBack) event(s). Вызов событий контролов или страницы которые инициировали событие PostBack
- LoadComplete. На этом этапе, все контролы загружены. Место для дополнительной обработки.
- PreRender. Для финальных измненений страницы или контролов на странице
- SaveStateComplete. До этого события, ViewState уже задан. Используется для обработки которая требует что бы ViewState был уже задан.
- Render. Для генерации HTML, DHTML, Scripts для своих пользовательских контролов
- UnLoad. Для освобождения Управляемых (Managed) ресурсов использованых в процессе обработки страницы
5. Что такое фильтры ответов Response Filters ? Когда обозреватель запрашивает ASP.NET-страницу с веб-сервера, движок ASP.NET обрабатывает запрос в несколько шагов, результатом которых будет разметка, возвращенная запрашиваемому обозревателю для последующего отображения. Этапы данного процесса иногда называют HTTP- конвейером , который может выполнить такие задачи, как идентификация, авторизация, а также заставить запрашиваемую страницу обработать свое содержимое. На одном из последних этапов HTTP-конвейера обработанная разметка передается фильтру ответов (response filter), который (при наличии) имеет возможность исследовать и изменить разметку до того, как она будет возвращена запрашиваемому обозревателю.
void Page_Load(){ Response.Filter = new ResponseFilterClassName(Response.Filter)}
...
public class WhitespaceFilterVB: MemoryStream
{
private Stream outputStream = null;
public void New(Stream output) { outputStream = output; }
public overrides void Write(Byte[] buffer,int offset, int count){}
}
Ссылка на оригинал: здесь
...