Joy*_*yin 21 javascript asp.net
我有一个像这样声明的按钮:
<asp:Button id=Send runat="server" EnableViewState="False"
ToolTip="Email me this report" CssClass="Button" Text="Email me this report">
</asp:Button>
Run Code Online (Sandbox Code Playgroud)
但如果我在浏览器中检查元素,它会显示如下:
<input type="submit" class="Button" title="Email me this report"
id="ctl03_Toolbar_Send" onclick="javascript:WebForm_DoPostBackWithOptions(new
WebForm_PostBackOptions("ctl03$Toolbar$Send","", true, "", "";, false, false))"
value="Email me this report" name="ctl03$Toolbar$Send">
Run Code Online (Sandbox Code Playgroud)
我想知道onclick事件的来源是什么?它有什么作用?
感谢您的帮助.
如果为Button服务器控件设置PostBackUrl属性,则表示它是跨页面发布,然后asp.net框架而不是普通的__DoPostBack()添加"WebForm_DoPostBackWithOptions".检查是否为此按钮设置了"PostBackUrl"属性.
<asp:Button id=Send runat="server" EnableViewState="False" PostBackUrl="~/Page2.aspx"
ToolTip="Email me this report" CssClass="Button" Text="Email me this report">
</asp:Button>
Run Code Online (Sandbox Code Playgroud)
如果在你的情况下你没有设置"PostBackUrl",那么ASP.NET框架也不会默认为Button Control添加它,所以这意味着必须有另一个控件设置OnClick属性值可能使用以下服务器端代码 -
PostBackOptions myPostBackOptions = new PostBackOptions(this);
myPostBackOptions.ActionUrl = "Page2.aspx";
myPostBackOptions.AutoPostBack = false;
myPostBackOptions.RequiresJavaScriptProtocol = true;
myPostBackOptions.PerformValidation = true;
// Add the client-side script to the HyperLink1 control.
Button1.OnClientClick = Page.ClientScript.GetPostBackEventReference(myPostBackOptions);
Run Code Online (Sandbox Code Playgroud)
了解在呈现的HTML中没有"ASP.NET控件"这样的东西,Web服务器响应用户的请求而输出.所有ASP.NET控件都以一种方式呈现一些HTML,使一切在服务器上按预期工作.Button控件正在发出"onclick"属性,以便触发一些JavaScript,这些JavaScript将导致表单数据被发布回服务器(假设任何客户端验证器都不会阻止它).
正如我刚才提到的,使用此方法返回数据的原因是为任何客户端脚本提供先运行的机会,例如可以检查并查看是否未填写任何必填字段的数据验证控件.
基本上,除非您希望创建自己的ASP.NET服务器控件,否则您无需过多担心从IIS发出的最终响应.熟悉正在发生的事情是很好的(我当然不是说你不应该确切地了解服务器控制如何做他们的事情),但是你不必非常熟悉每个客户端调用和参数. ASP.NET正在制定以便开始.
| 归档时间: |
|
| 查看次数: |
52907 次 |
| 最近记录: |