Response.Write和ClientScript.RegisterStartupScript區別 .

來源:互聯網
上載者:User

 Response.Write的產生HTML代碼,你會發現Response.Write方法產生的程式碼是寫到了HTML代碼的最開始,即標籤之前。此時,所有的 HTML對象都還沒有產生,如果要想使用HTML內的對象,並與之互動,就會出現“找不到對象”的錯誤。因此,筆者推薦一個更加符合CodeBehind方式的方式----使用RegisterXXX方法。RegisterXXX包括:RegisterClientScriptBlock、RegisterStartupScript以及用於判斷的IsStartupScriptRegistered函數。

RegisterStartupScript 的原型是:

  Overridable Public Sub RegisterStartupScript( _
  ByVal key As String, _
  ByVal script As String _
  )

  其中:key表示這個指令碼的唯一標識,script是代表指令碼的字串。

  RegisterClientScriptBlock的原型與RegisterStartupScript相同,兩個函數不同在於將其包含的指令碼代碼寫入到HTML檔案的不同位置。RegisterClientScriptBlock在 Page 對象的元素的開始標記後立即發出用戶端指令碼,RegisterStartupScript則是在Page 對象的元素的結束標記之前發出該指令碼。如果你的指令碼有與頁面對象(doucument對象)進行互動的語句,則推薦使用RegisterStartupScript,反之如果要想用戶端指令碼儘可能早的執行,則可以使用RegisterClientScriptBlock或Response.Write。

   如:

ClientScript.RegisterStartupScript(GetType(), "", "<script>if(confirm('你確認要刪除導航:/"" + GridView1.Rows[index].Cells[2].Text + "/"嗎?')==true) window.open('del.aspx?id="+ID+"');</script>")

  為了防止在頁面中反覆加入指令碼,在註冊指令碼時ReisterStartupScript/RegisterClientScriptBlock使用了key作為註冊的Key,然後在程式中可以使用IsClientScriptBlockRegistered作判斷。

轉自:http://blog.csdn.net/haoliumeihua/article/details/4075251

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.