Подтвердить что ты не робот

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

Лучшее объяснение, которое я нашел для postBack - это Wiki.

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

Так что здесь еще кое-что, чтобы рассмотреть:

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

Например, вы можете отправить кому-нибудь ссылку на поиск в Google. Таким образом, нам НЕ ВСЕГДА ДОЛЖНО БЫТЬ ЗАДАНО на сервер, чтобы получить данные.

Надеюсь это поможет. ура

Ответ 2

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

Вместо этого см. ASP.NET MVC.

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

Ответ 6

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

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

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

Ответ 7

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

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

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

Ответ 8

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

Существенное значение Post Back на самом деле вызывает __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>

Ответ 9

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

Ответ 10

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

далее... Asp.Net ispostback()