<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进行后台提交。
- 这是做什么的?
- 它来自哪里?
- 我可以摆脱它吗?
- 我如何摆脱它?
一些谷歌搜索发现这个表明会导致此问题的验证控件,但我不认为我有任何验证控件。
详细查看WebResource.axd
文件显示了很多看起来像是样板函数的内容,但我找不到任何引用它们的地方。
经过进一步调查,似乎我的提交按钮没有按照我想象的那样工作,因为它在其onclick
处理程序中包含一些JavaScript。然而,使用FireBug,我可以看到页面正在进行完全刷新(HTTP响应具有完整的页面文本),所以我不知道那是什么。另一方面,我现在看到了一个__EVENTVALIDATION
参数,它不应该存在(因为没有什么需要验证),所以这可能是值得研究的。
根据下面的回答者的答案,我遇到的问题似乎是ASP.NET执行后台提交的默认(唯一?)方式是通过JavaScript,即使基本的HTML表单也可以很好地完成。(个人认为这是微软愚蠢的设计选择;ASP.NET不应该引入JavaScript依赖性,直到您要求它执行无法在没有它的情况下完成的任务。)
基于这个观点,有几个人推测我不知道自己在说什么。(我承认我混淆了问题,误用了“后台提交”的术语,认为它仅涉及基于JS的内容。)虽然我不知道ASP.NET的实现细节,但我确实知道HTTP POST的一般工作原理,我的观点是基于考虑如何实现解决方案而不仅仅是基于我希望它如何工作。