Когда я просматриваю исходный код на своей странице ASP.NET, я получаю следующий фрагмент:
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="/WebResource.axd?d=5lheyan7fritNTjDRpG8vA2&t=633734967316503584" type="text/javascript"></script>
файл .aspx выглядит примерно так:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="NaturalDateDemo._Default" %>
<form id="form1" runat="server" enableviewstate="False">
Enter something to parse:<br />
<asp:TextBox ID="TextBox1" runat="server" Width="270px"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Parse" PostBackUrl="Default.aspx" CausesValidation="False" EnableViewState="False" UseSubmitBehavior="true" />
</form>
Оба фрагмента кода (буквенный код и материал в /WebResource.axd
), по-видимому, связаны с выполнением обратной передачи на основе JavaScript, и я не могу придумать ни одной причины, по которой моя страница потребовала бы JavaScript для обратной передачи.
- Что это делает?
- Откуда это?
- Могу ли избавиться от него?
- Как от него избавиться?
Страница, с которой исходит этот вопрос
Небольшая работа Google обнаружила это, указывающее, что элементы управления проверкой вызвать это, но я не думаю, что у меня есть какие-либо элементы управления проверкой.
Подробный просмотр файла WebResource.axd
показывает, что многие функции выглядят как стандартные функции, на которые я нигде не могу найти никаких ссылок.
После дальнейшего изучения оказалось, что моя кнопка отправки не делает то, что я думал, потому что в ее обработчике onclick
есть JavaScript. Однако, используя FireBug, я вижу, что страница полностью обновляется (ответ HTTP имеет полный текст страницы), поэтому я понятия не имею, о чем это. OTOH Теперь я вижу аргумент __EVENTVALIDATION
, которого там быть не должно (потому что нечего проверять), так что может быть интересно посмотреть.
Судя по приведенному ниже ответу, кажется, что я столкнулся с тем, что способ по умолчанию (только?) для ASP.NET для выполнения обратной передачи - через JavaScript, даже если базовая HTML-форма подойдет. (Лично я думаю, что это глупый выбор дизайна со стороны MS; ASP.NET не должен вводить зависимость от JavaScript, пока вы не попросите его сделать что-то, что невозможно сделать без него.)
Основываясь на этом мнении, несколько человек предположили, что я не знаю, о чем говорю. (Допускаю, что я запутал проблему, пропустив термин «обратная передача», думая, что он подразумевает только вещи, основанные на JS.) Хотя я не знаю деталей реализации ASP.NET, я знаю, как общий HTTP Материал POST работает, и мое мнение основано на рассмотрении того, как я буду реализовывать решение самостоятельно, а не только на том, как я хотел бы, чтобы оно работало.
PostBackUrl
из файлаButton
. Смотрите мой ответ для более подробной информации. - person Ruben   schedule 11.08.2009