在項目中看到這樣一句代碼:
this.PreRender += new EventHandler(PageJs_PreRender);
PreRender是個事件,這句話是給PreRender事件添加一個處理方法。
註冊JS的一個例子:
RegisterClientScriptBlock
/// <summary>
/// 頁面呈現之前從伺服器註冊Javascript到前台HTML
/// 使前台顯示當前LetterTemplate的LetterTemplateParamerter
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void PageJs_PreRender(object sender, System.EventArgs e)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script language=\"javascript\">\r\n");
if (Session[GlobalPara.SEESION_SHOW_ALERT_MESSAGE] != null)
{
sb.Append("alert('" + StringUtil.JsScriptReplaceIllegalString((String)Session[GlobalPara.SEESION_SHOW_ALERT_MESSAGE]) + "'); \r\n");
Session.Remove(GlobalPara.SEESION_SHOW_ALERT_MESSAGE);
}
sb.Append("</script>\r\n");
string js = sb.ToString();
if (!IsClientScriptBlockRegistered("PageJs_PreRender"))//註冊JS
{
RegisterClientScriptBlock("PageJs_PreRender", js);
}
}
為什麼要註冊JavaScript?註冊JavaScript是什麼意思?
網上關於RegisterClientScriptBlock作用的說法並不一致,有的說是從前台向後台註冊JavaScript指令碼,有的說是從後台向前台註冊JavaScript指令碼。
對註冊JavaScript這一說法的理解很模糊。
補充:
public static void ShowErrorMsg(Page page, string ErrMsg)
{
string scrpt = "<script language='javascript' >"
+ "alert('" + ErrMsg + "');</script>";
page.ClientScript.RegisterStartupScript(page.GetType(), "clientscript", scrpt);
}
RegisterClientScriptBlock一般返回的是用戶端函數的封裝,而RegisterStartupScript返回得函數在document裝載完成後會執行,類似於我們平時所說的body onload="f()"裡面的函數;這兩個方法在用戶端轉譯的代碼位置不同,RegisterClientScriptBlock在<form runat=server>之後,而RegisterStartupScript在</form>之前。