ASP.NET服务端执行js脚本(备忘)
T_T : [之所以需要用到以下方式来在客户端执行js脚本是因为ASP.NET中的OnClick和OnClientClick的机制问题。(Html页面中的元素(比如button)的onclick不止绑定一个方法,其中绑定的方法有OnClientClick注册的,也有OnClick注册的,关键是OnClientClick注册的方法总是被放在OnClick注册的方法前面,如下例子)]
Confusion:
1 <asp:Button ID="btnSave" OnClick="btnSave_Click" OnClientClick="javascript:RefreshGrid();" runat="server" />
2
3 ###########################################################################################################################################
4 html页面结果:
5
6 <input type="submit" name="ctl00$MainContent$btnSave" value="保存"
onclick="javascript:RefreshGrid(); WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$btnSave", "", true, "", "", false, false))"
id="ctl00_MainContent_btnSave" class="button" />
#############################################################################################################################################
解决方法:
Template:
1 var jsCode= "<script language='javascript'>(function (){ /*你的js代码*/})(); </script>";
2 if (!this.ClientScript.IsStartupScriptRegistered(this.GetType(), "jsCode"))
3 {
4 this.ClientScript.RegisterStartupScript(GetType(), "jsCode", jsCode);
5 }
Example:
1 var refresh = "<script language='javascript'>(function (){ window.parent.RefreshGrid();})(); </script>";
2 if (!this.ClientScript.IsStartupScriptRegistered(this.GetType(), "refresh"))
3 {
4 this.ClientScript.RegisterStartupScript(GetType(), "refresh", refresh);
5 }