在實際開發過程中,我們的HTML元素需要調用后台,而且需要讓后台進行復雜運算后再進行數據重新綁定操作,遇到這樣的問題怎么辦呢?可能有人說在后台創建一個方法,該方法實現綁定數據操作,但是實際呢?結果不盡人意,它沒有執行綁定的實現,而只是簡單的執行一下方法但是前台無反應,為什么出現這樣的情況?原來前台調用后台方法其實只是返回結果,對實現過程及元素組合變化不管不問,它只是關注執行后的結果,不為過程買單,那么有什么方法解決這個問題呢?想想?我們可不可以讓前台HTML元素觸發ASP.NET按鈕來觸發事件呢,同時隱藏這個按鈕?讓它去實現綁定操作。該技巧是可行的!!本樓主為了操作簡單沒有以綁定數據作為示例,而只是簡單的打印數據,原理基本和綁定數據類似,代碼如下:
這是前台代碼:
<html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title></title> <script src="JS/jquery.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $("#btnTJ1").bind("click", function () { var result = '<% =Print2Web() %>'; alert("執行完畢,請檢查一下后台數據有沒有打印出來");//結果顯然沒有打印出來 }); $("#btnTJ2").bind("click", function () { $("#<%= btnGet.ClientID %>").trigger("click");//效果實現了 }); }); </script> </head> <body> <form runat="server"> <input type="button" value="前台HTML元素調用后台方法" id="btnTJ1" /> <input type="button" value="前台HTML元素調用后台事件" id="btnTJ2" /> <div style=" visibility: hidden"> <asp:Button ID="btnGet" runat="server" Text="輔助前台獲取數據" onclick="btnGet_Click" /> </div> </form> </body> </html>
下面是后台代碼:
protected void Page_Load(object sender, EventArgs e) { } /// <summary> /// 通過借助后台事件 -- 能否在頁面輸出 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnGet_Click(object sender, EventArgs e) { // // 這里有復雜實現 // Response.Write("事件按鈕打印--測試成功"); } /// <summary> /// 后台方法 -- 目的是前台調用,能否在頁面輸出 /// </summary> public int Print2Web() { // // 這里有復雜實現 // Response.Write("調用方法打印--測試成功"); return 1; }