为什么我的ASP.NET页面会注入此WebResource.axd Javascript文件?

BCS*_*BCS 5 javascript asp.net webresource.axd

当我在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&amp;t=633734967316503584" type="text/javascript"></script> 
Run Code Online (Sandbox Code Playgroud)

.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>
Run Code Online (Sandbox Code Playgroud)

两个代码块(文字代码和内容/WebResource.axd)似乎与基于JavaScript的回发相关,我想不出任何理由我的页面需要JavaScript来进行回发.

  • 这是做什么的?
  • 它来自哪里?
  • 我摆脱它?
  • 我怎么能摆脱它​​?

这个问题来自的页面


谷歌的一项工作发现表明验证控件会导致这种情况,但我认为我没有任何验证控件.

WebResource.axd详细查看文件显示了很多看起来是锅炉板功能的东西,我找不到任何地方的参考.


经过进一步调查后,似乎我的提交按钮没有按照我的想法进行,因为它的onclick处理程序中有一些JavaScript .但是,使用FireBug我可以看到页面正在进行完全刷新(HTTP响应具有完整的页面文本),所以我不知道那是什么.OTOH我现在看到一个__EVENTVALIDATION不应该存在的论点(因为没有什么可以验证的)所以查找可能会很有趣.


似乎基于下面的回答者,我遇到的是,即使基本的HTML表单可以正常运行,ASP.NET进行回发的默认(仅?)方式也是通过JavaScript进行的.(就我个人而言,我认为这是MS部分的一个愚蠢的设计选择;在你要求它做一些没有它的情况下无法完成的事情之前,ASP.NET不应该引入JavaScript依赖.)

基于这种观点,有几个人推测我不知道我在说什么.(我会因为使用术语"post-back"而错过这个问题,认为它只暗示基于JS的东西.)虽然我不知道ASP.NET的实现细节,但我知道一般的HTTP如何POST的东西是有效的,我的意见是基于考虑如何实现我自己的解决方案,而不仅仅是基于我希望它如何工作.

Rub*_*ben 13

答案比我在这里看到的要简单得多:只需PostBackUrl从中移除Button所有JavaScript就像魔术一样消失.

如果没有JavaScript,HTML按钮无法提交到指定页面以外的其他页面<form action="...">.然而,ASP.NET确实提供了一种可能性,要做到这一点外的开箱如果指定PostBackUrl一个Button.这就是JavaScript的意义:支持非默认的回发.

在这种特殊情况下你PostBackUrl是一样<form>action,但显然ASP.NET没有特殊情况下,这和任何非空字符串触发此包装脚本.