在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("ctl00$header1$slidingpanel1$Login1$cmdLogin", "", true, "", "", false, false))">
我想摆脱这个自动生成的 onclick 事件,并且它正在浏览器中的aspnetform中重新发送一个onsubmit事件
<form name="aspnetForm" method="post" action="default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm">
我想摆脱这个自动生成的javascript事件请帮助我解决这个问题,因为其他也可以有这个问题 提前谢谢
答案 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; }; }