Почему моя страница ASP.NET внедряет этот файл WebResource.axd Javascript?
Когда я просматриваю источник на своей странице 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 найденаэтот указывая на то, чтоvalidation controls может вызвать это, но я не думаю, что у меня есть какие-либо средства проверки.
Глядя наWebResource.axd
файл подробно показывает многое из того, что выглядит как функция котельной плиты, на которую я не могу найти никаких ссылок нигде.
После дальнейшего изучения кажется, что моя кнопка отправки не выполняет то, что я думал, потому что в ней есть некоторый JavaScriptonclick
обработчик. Однако, используя FireBug, я вижу, что страница полностью обновляется (в HTTP-ответе содержится полный текст страницы), поэтому я понятия не имею, о чем это. OTOH я сейчас вижу__EVENTVALIDATION
аргумент, который не должен быть там (потому что проверять нечего), так что это может быть интересно посмотреть.
Исходя из ответа ниже, кажется, что я сталкиваюсь с тем, что ASP.NET по умолчанию (только?) Выполняет постбэк с помощью JavaScript, даже если базовая форма HTML будет работать нормально. (Лично я считаю, что это глупый выбор дизайна для части MS; ASP.NET не должен вводить зависимость JavaScript, пока вы не попросите ее сделать что-то, что не может быть сделано без нее.)
Исходя из этого мнения, несколько человек предположили, что я не знаю, о чем говорю. (Я признаю, что я перепутал проблему по ошибке, используя термин «post-back», думая, что это подразумевает только материал, основанный на JS.) Хотя я не знаю деталей реализации ASP.NET, я знаю, как в целом HTTP POST работает, и мое мнение основано на рассмотрении того, как я сам реализую решение, а не на том, как бы я хотел, чтобы оно работало.