使用Response.Write實現在頁面的生命周期中前后台的交互


  Response.Write()方法非常的常見,也很普通,就是向http output中輸出一string。其輸出的內容位於頁面的最頂端,常用來實現顯示一些頁面消息框等邏輯。

 

  一般來說,在頁面的整個生命周期過程中通過Response.Write輸出的內容都會在最后隨頁面的文檔流輸出到Client端。但借助於Response.Flush,便可實現過程中前后台的動態交互。

 

  Response.Flush方法,強制將緩沖區中的內容輸出到Client端,而無需等到生命周期的結束。通過一個例子加深理解,該實例實時的反應后台方法執行的進度。

  每次后台試圖update client progress的時候,均會由Response.Write輸出一段js腳本,通過js來更新進度值。

for (int i = 1; i <= 100; i++)
{
    Thread.Sleep(500);
    setProcessValue(i);
}

 

private void setProcessValue(int percent)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("<script>setProcessBarValue('" + percent + "')</script>");

    HttpContext.Current.Response.Write(sb.ToString());
    HttpContext.Current.Response.Flush();
}

  

  運行代碼,會看到progress value是隨着方法的執行逐次的向上遞增。Response.Flush的調用,保證了每次執行的時候都會及時的將內容輸出到Client端。

 

  去掉代碼中所有的Response.Flush,運行代碼。結果發生變化,progress value只在頁面加載完全后一次性的從0變成了100。示例代碼

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM