dotnet夜話 第五集筆記 ClientScript.RegisterStartupScript()與ScriptManager.RegisterStartupScript()

page類:
1、頁頭中inherits標識繼承於哪個類。partial標

識局部的,類的一部分,編譯的時候 把同名的

partial合併成一個完整的class文件,然後編譯成

中間文件。
2、.net頁面的生命週期,控件的生命週期,生命周

期的應用。頁面-屬性-document-trace設爲true,

運行頁面可以看到跟蹤信息。
3、統一驗證身份的方法,寫一個驗證的類文件(類

文件中添加this.Load+=new eventhander

(thisLoad) void thisLoad(object

sender,eventarge e){if(session["username"]

==null){response.redirect("login.aspx");}})

,讓需要驗證的頁繼承這個類。(第五集26分鐘)
4、page類的屬性:page.ispostback

(),clientscript。45分鐘,有個js類,方便輸出

js題型。
5、回調技術(52分鐘),無刷新局部判斷(要比

ajax複雜)。

clientscript  Page.ClientScript.RegisterStartupScript()介紹

page.RegisterStartupScript在新的版本中已經過期了 取而代之的是其他兩種方法。

ScriptManager和ClientScript的區別,他倆的方法是一樣的,只是在特殊的場合要注意使用。

ScriptManager適用在特殊的場合,那麼我們在控件中如何來進行區分應該使用哪一個呢?其實可以通過尋找控件的parent,判斷是否有updatepanel,如果有就用ScriptManager;沒有的話當然用ClientScript,避免每次postback操作時控件都要進行資源文件的註冊。也就是說 是否兼容ajax的問題,ScriptManager兼容於ajax,在ajax updatepanel中使用ClientScript是無效的。這裏是要特別注意的,本人就因爲這個折磨了一下午了。

使用類型、鍵、腳本文本和指示是否添加腳本標記的布爾值向 Page 對象註冊啓動腳本。 也就是說利用.net函數向頁面中添加scrip函數

參數

type

要註冊的啓動腳本的類型。

key

要註冊的啓動腳本的鍵。

script

要註冊的啓動腳本文本。

addScriptTags

指示是否添加腳本標記的布爾值.

tips:

啓動腳本由它的鍵和類型唯一標識。具有相同的鍵和類型的腳本被視爲重複腳本。只有使用給定的類型和鍵對的腳本才能使用該頁面進行註冊。試圖註冊一個已經註冊的腳本不會創建重複的腳本。

調用 IsStartupScriptRegistered 方法以確定具有給定的鍵和類型對的啓動腳本是否已經註冊,從而避免不必要的添加腳本嘗試。

RegisterStartupScript 方法的此重載中,使用 addScriptTags 參數可指示 script 參數中提供的腳本是否包裝在 <script> 元素塊中。將 addScriptTags 設置爲 true 指示腳本標記將自動添加。

RegisterStartupScript 方法添加的腳本塊在頁面加載完成但頁面的 OnLoad 事件引發之前執行。

舉例說明

<%@ Page Language="C#"%>
<script runat="server">
public void Page_Load(Object sender, EventArgs e)
{
// Define the name and type of the client scripts on the page.
String csname1 = "PopupScript";
String csname2 = "ButtonClickScript";
Type cstype = this.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegistered(cstype, csname1))
{
String cstext1 = "alert('Hello World');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);
}
// Check to see if the client script is already registered.
if (!cs.IsClientScriptBlockRegistered(cstype, csname2))
{
StringBuilder cstext2 = new StringBuilder();
cstext2.Append("<script type=text/javascript> function DoClick() {");
cstext2.Append("Form1.Message.value='Text from client script.'} </");
cstext2.Append("script>");
cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false);
}
}
</script>
<html>
<head>
<title>ClientScriptManager Example</title>
</head>
<body>
<form id="Form1"
runat="server">
<input type="text" id="Message"> <input type="button" value="ClickMe" οnclick="DoClick()">
</form>
</body>
</html>
注意兩個函數的使用,一個是start添加到頁面加載之前,在pageload之前執行,另外一個是在加載頁面之後執行。這兩個函數的主要作用是將scrip動態的嵌入到.net的代碼中,適合處理大批的js代碼,比如你要組一個js的消息提示框,需要和服務器交互,那麼你可以把js代碼寫成字符串用這兩個函數輸出。這樣就可以輕鬆的和服務器交互了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章