Что такое обратная передача?



лучшее объяснение, которое я нашел на обратной передачи от Вики.



обратная передача-это HTTP-сообщение на ту же страницу, на которой находится форма.



в то время как статья объясняет, как вторая страница была необходима в ASP, но больше не нужна ASP.NET, это не дает много деталей или фона. Я ищу чертов фолиант информацию на обратной передачи. Так же, как простой вопрос "как я могу очистить дом" может быть решен этим 900 страниц книги. Мне не нужно 900 страниц, но детали, пожалуйста. Я нашел хороший маленький учебник для ASP.NET жизненный цикл, но он серьезно замалчивает обратные связи (среди прочего).



Я смотрю на разработчиков, которые были вокруг до .NET и действительно не принимают такие вещи как должное. Книги и гиперссылки являются разумными ответами или дополнениями к вашему ответу.

700   10  

10 ответов:

до сих пор я видел правильный ответ, на который неоднократно ссылались, и почти все стеснялись того, что я субъективно считаю меткой.

давайте начнем с основ:

HTTP-запрос может быть любым из http-команд, но два, которые люди используют больше всего, это GET и POST. Ну, это те два, которые программист использует чаще всего. Все остальные имеют какую-то цель, если они реализованы на сервере. При отправке информации на сервер, вы можете сделать это либо с помощью URL-адреса (для запроса страницы), либо в теле запроса (например, POST, PUT, DELETE).

теперь вы заметите (я уверен), что URL-адрес в запросе GET часто содержит данные, и это верно, но согласно W3C, вы не должны использовать GET для изменения состояния, и все же мы часто это делаем. Это своего рода хак, который мы все согласны-это фактическое использование, а не рубить. Независимо от того, делает ли это хак или фактическая деталь реализации, я оставляю до вы.

поэтому, когда вы отправляете тело сообщения (пропуская другие на данный момент, Вы можете понять это отсюда) с элементами формы, вы отправляете обратно определенные элементы. Как эти элементы определяются, зависит от вас и от среды, в которой вы работаете. Ты может сообщение на сервер с элементом JSON в теле, или с XML, или с полями формы. Как правило, мы делаем сообщения из элемента формы в тело из HTML.

теперь все говорит: "о, обратная передача-это последующий запрос на страницу.- Но это не так. Обратная передача - это когда вы отправляете данные через POST - > обратно на сервер. Я говорю это, потому что разница между запросом GET и запросом POST заключается в том, что данные включены в тело (и используется глагол, но клиент обычно знает, как с этим справиться). Ты может обратная передача на страницу при первом посещении страницы, и на самом деле ASP.NET есть инструменты для этого в библиотеке. Вы могли бы, конечно у вас есть настольный клиент, отправляющий данные на сервер (думаю, Twitter), не показывая никакой веб-страницы вообще с сервера (хорошо, поэтому twitter, вероятно, не лучшая концепция для примера здесь, но я хочу проиллюстрировать, что вы можете использовать клиент, который не показывает веб-страницу, поэтому запрос не требуется).

так что действительно то, что вы должны прочитать там в "postback" является "Я отправляю данные обратно на сервер для обработки". Предполагается, что вы извлекли страницу изначально с GET, чтобы показать пользователь <form> элемент, который имеет <input> поля для их взаимодействия, и что в конце вы отправляете данные обратно. Но я надеюсь, что вы видите, что это не должно быть в таком порядке.

так вот что еще нужно рассмотреть:

что делать, если вы дали пользователю страницу с кучей <input>и без <form> но вместо этого была кнопка, подключенная в javascript, чтобы объединить все эти <input>С &value-n= и отправить их как вам? Делает то же самое, но нарушает это понятия только с помощью GET запросов. (возможно)последующая дискуссия побуждает меня усилить, что GET не должен иметь никаких побочных эффектов (без обновления значений)

это то, как вы можете отправить кому-то ссылку на поиск google, например. Поэтому нам не всегда нужно отправлять сообщения обратно на сервер, чтобы получить данные.

надеюсь, что это помогает. Ура

обратная передача: часть ASP.NET надуманная техника для сокрытия истинной апатридной природы web / HTTP за статусным фасадом. Это приводит к сложному коду (IsPostback,...), трудно понять жизненный цикл страницы, много различных событий,... и многочисленные проблемы (размер ViewState, stickyness веб-фермы, серверы состояний, предупреждения браузера (не используя шаблон PRG)...)

см.ASP.NET MVC.

см.ASP.NET страница обзор жизненного цикла на MSDN для хорошего общего представления о том, что происходит, когда запросы попадают на сервер.

обратная передача-это любой запрос на страницу, которая не первый запрос. Обратная передача всегда будет осуществляться в ответ на действие пользователя (чаще всего вызывается кнопкой, элементом управления AutoPostBack или Ajax).

пост обратно туда и обратно от клиента (браузера) к серверу и обратно к клиенту.

Это позволяет странице пройти через движок asp на сервере и любое динамическое содержимое, которое будет обновляться.

вот хорошее объяснение

ASP.Net использует новую концепцию (ну, новую по сравнению с asp... теперь он устарел) ViewState для поддержания состояния вашего asp.net управление. Что это значит? В двух словах, если вы введете что-то в текстовое поле или выберите выпадающий список из выпадающего списка, он будет помнить значения при нажатии на кнопку. Старый asp заставит вас написать код, чтобы запомнить эти значения.

Это полезно, если пользователь обнаруживает ошибку. Вместо того, чтобы программист должен иметь дело с запоминанием повторного заполнения каждого веб-элемента управления, asp.net viewstate делает это автоматически. Это также полезно, потому что теперь код позади может получить доступ к значениям этих элементов управления на вашем asp.net веб-форма с intellisense.

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

определение Википедии postback довольно хорошее, но я бы добавил следующее: обратная передача являетсяв последующемHTTP POST на ту же страницу, что и форма.

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

обратные передачи могут быть либо полными (обновить всю страницу), либо частичными (в случае использования AJAX). Частичная обратная передача страницы будет повторно отображать только часть страницы (например, один раскрывающийся список, таблицу и т. д.).

в старом HTML единственный способ сделать что-то обновленное на веб-странице-это повторно отправить новую веб-страницу в браузер клиента. Вот что обычно делал ASP, вам нужно сделать эту вещь, называемую "обратной передачей", чтобы отправить обновленную страницу клиенту.

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

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

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

необходимая пост обратно фактически называете __doPostBack которые отправляют все данные формы, полученные от вашего первого запроса обратно на сервер. (__EVENTTARGET содержит идентификатор элемента управления.)

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
    NHibernate Demo
</title>
    <script language="javascript" type="text/javascript">
        function dopost() {
                __doPostBack('LinkButton1', '');    
        }
    </script>
</head>
<body>
    <h1>NHibernate Demo</h1>    
    <form name="ctl01" method="post" action="Default.aspx" id="ctl01">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTMxNzcwNTYyMWRkKHoXAC3dty39nROvcj1ZHqZ5FYY=" />
</div>

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['ctl01'];
if (!theForm) {
    theForm = document.ctl01;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>   
<div>
    <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="B2D7F301" />
    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwKZx5vTCgKM54rGBgLM9PumD20dn9KQguomfpAOdTG0r9Psa7al" />
</div>
        <a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
        <input type="button" value="testPostBack" id="testpostback" onclick="dopost();" />
    </form>
</body>
</html>

IsPostBack является собственностью Asp.Net страница, которая говорит, является ли страница on its initial load и если пользователь выполнил кнопку на вашей веб-странице, которая заставила страницу отправить обратно к себе.

больше на ... ispostback Asp.Net ()

Postback-это запрос, во время которого ASP восстанавливает значения свойств элементов управления из состояния представления.

Comments

    Ничего не найдено.