摆脱asp.net中的自动javascript事件

时间:2013-10-24 13:03:22

标签: javascript asp.net

在asp.net appliaction我得到自动javascript事件,我真的不想要。我有一个名为登录的按钮,因为这个自动生成的javascript事件,我的客户端无法登录,这是自动生成的,我真的不知道为什么这是happing

用户控制.ascx文件中的Asp.net按钮

<asp:Button ID="cmdLogin" runat="server" Text="Login" CssClass="Footer_button" 
                        CommandName="login"  CausesValidation="True" />

正如您所看到的,按钮中根本没有任何事件,但是当我在任何浏览器中运行我的应用程序时,它会呈现自动生成的事件

自动授权的javascript事件

    <input name="ctl00$header1$slidingpanel1$Login1$cmdLogin" value="Login" id="ctl00_header1_slidingpanel1_Login1_cmdLogin" class="Footer_button" type="submit"
onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$header1$slidingpanel1$Login1$cmdLogin&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))">

我想摆脱这个自动生成的 onclick 事件,并且它正在浏览器中的aspnetform中重新发送一个onsubmit事件

<form name="aspnetForm" method="post" action="default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm">

我想摆脱这个自动生成的javascript事件请帮助我解决这个问题,因为其他也可以有这个问题 提前谢谢

4 个答案:

答案 0 :(得分:2)

这是javascript所以你可以完全摆脱它。 (你应该吗?那不是问题......)

只需将它放在页面的底部(如果被调用则会抛出异常);

window.WebForm_OnSubmit = null;
window.WebForm_DoPostBackWithOptions = null;

或覆盖它以做你想做的事,包括no-op:

window.WebForm_OnSubmit = window.WebForm_DoPostBackWithOptions = function() { };

或者在呈现文档时使用javascript将其从控件中删除:

document.getElementById("ctl00_header1_slidingpanel1_Login1_cmdLogin").onclick = null;

document.getElementById("ctl00_header1_slidingpanel1_Login1_cmdLogin").onclick = function()
{
    alert("My custom onclick handler");
}

并从表单中删除回发处理程序:

document.getElementById("aspnetForm").onsubmit = null;

但是,如果您没有使用回发并且没有将客户端onclick处理程序附加到此按钮,那么您使用它的原因是什么?只是正常提交​​表格?请提供更多详细信息。

我通常使用自己的自定义函数覆盖doPostBack和/或form.onsubmit的ASP.NET版本,该函数负责处理其他内容,例如强制等待挂起的AJAX调用完成(或中止它们)..取决于我想要实现的目标。

答案 1 :(得分:0)

您无法更改使用ASP.Net webforms构建的此事件挂钩模型。

只要您需要,您需要在从页面触发事件时调用'onclick', 'onselectedindexchanged', etc等服务器端事件处理程序。

此事件映射由onclick, onchange, etc等javascript代码完成。

ASP.Net在您的页面内部添加一个脚本(.axd)并处理WebForm_PostbackOptions函数。

还可以查看How to prevent PostBack without using JavaScript?

如果您想阻止事件绑定,请停止使用server side events并自行处理,或use ASP.Net MVC

答案 2 :(得分:0)

是的,不管是不是必须的,这是javascript,而且我已经知道了为什么这对于其他我喜欢分享它而感到高兴....

Acutlly我正在使用Asp.net登录控件和s event Authenticate from code behind that为什么我不需要将click事件放在按钮上,因为此按钮处于登录控制之下并且通过asp.net登录控制事件进行登录认证“验证“所以不需要在按钮上放置任何事件,而是从代码后面的登录控制

<asp:Login ID="Login1" runat="server">
                <LayoutTemplate>
                    <label for="log">User Name: </label>
                    <asp:TextBox ID="Username" runat="server" ></asp:TextBox>

                    <label for="pwd">Password: </label>
                    <asp:TextBox ID="password" TextMode="Password" runat="server"></asp:TextBox>
                  // this is the Button where javascript event were rendered in browsre
                    <asp:Button ID="cmdLogin" runat="server" Text="Login" CommandName="login" CssClass="Footer_button" />                       
                </LayoutTemplate>
 </asp:Login>

此登录控件是在客户控制文件.ascx下我在Default.aspx页面中注册了此控件,dafault页面中有更多的客户控制,我在Default.aspx页面中重新设置如下

<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false"
    CodeFile="Default.aspx.vb" Inherits="_Default" Title="Minato Cars - Home Page" %>

<%@ Register Src="~/Controls/CallRequest.ascx" TagName="CallRequest" TagPrefix="psc" %>
<%@ Register Src="~/Controls/RequestACar.ascx" TagName="RequestACar" TagPrefix="psc" %>
<%@ Register Src="~/Controls/Skype.ascx" TagName="Skype" TagPrefix="psc" %>
<%@ Register Src="~/Controls/EmailInfo.ascx" TagName="EmailInfo" TagPrefix="psc" %>
<%@ Register Src="~/Controls/QuickContact.ascx" TagName="QuickContact" TagPrefix="psc" %>
<%@ Register Src="~/Controls/SearchByVehicleType.ascx" TagName="SearchByVehicleType" TagPrefix="psc" %>
<%@ Register Src="~/Controls/SearchbyMake.ascx" TagName="SearchByMake" TagPrefix="psc" %>

(这是要理解的要点)

我在CallRequest.ascx&amp;中进行了一些asp.net验证。在QuickContact.ascx Custome Control中。并且默认页面使用母版页..

众所周知,每当我们使用Asp.net验证时,它会在窗体中使用onsubmit事件或在asp.net aspnetform中呈现浏览器中的javascript事件_dopostback,有时它还会在按钮上呈现onclick事件,类型为submit( type =提交按钮) 这就是为什么我因为asp.net验证而得到自动生成的javascript事件。我通过使用没有表单的jQuery验证来解决它现在它s working.. althoug i have test Cause Validation of submit button but the problem was still same which i have never faced before... but it没问题Jquery验证他的工作做得很好...

抱歉我的英文

答案 3 :(得分:-1)

        函数ButtonWorkAgain()         {window.WebForm_OnSubmit = function(){return true; }; }