在 ASP.NET WebForms 中,伺服器端 C# 程式碼與用戶端 JavaScript 常需雙向互動:JS 呼叫 C# 方法/存取變數,C# 執行 JS 函數/讀取 JS 變數。
頁面放置隱藏按鈕 (style="display:none"),JS 呼叫 document.getElementById("btnHidden").click() 觸發伺服器端 btnHidden_Click。
<script>
var result = "<%= GetServerData() %>"; // 頁面載入時執行
alert(result);
</script>
缺點:無法在 PostBack 後動態呼叫。
__doPostBack 手動觸發function callServer(methodName) {
__doPostBack(methodName, '');
}
// 伺服器端 Page_Load 判斷 Request["__EVENTTARGET"] 分派處理
JS 設定 document.getElementById("hfMethod").value = "MethodName" 並 form.submit(),伺服器端讀取隱藏欄位決定執行邏輯。
<input type="hidden" runat="server" id="hfValue" />,C# 設定 hfValue.Value = "data",JS 讀取 document.getElementById("hfValue").value。var jsVar = "<%= csharpVar %>"; (僅初始渲染)。ClientScript.RegisterStartupScript(GetType(), "key", "var temp = '" + value + "';", true);。<input type="hidden" runat="server" />,C# 透過 Request.Form["id"] 取得。Request.Cookies;或 C# 寫入 Session,JS 透過 AJAX 取得。ClientScript.RegisterStartupScript(GetType(), "key", "alert('Hello');", true); 頁面載入後執行。Literal 中輸出 <script>...</script> 並設定 Visible=true。WebForms 專案建議改用 AJAX (UpdatePanel、PageMethods、Web API、SignalR) 實現前後端分離通訊,避免上述傳統手法的維護困擾。