При просмотре источника на странице 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 работает, и мое мнение основано на рассмотрении того, как я сам реализую решение, а не на том, как бы я хотел, чтобы оно работало.