首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 與 JavaScript 互相呼叫完整技術指南(二)

     編輯:關於C語言

前言

承接上篇文章,本文將詳細介紹 ASP.NET 環境下 C# 後端程式碼與前端 JavaScript 的四種互動模式,涵蓋函式呼叫、變數存取與實戰技巧。

一、C# 呼叫 JavaScript 函式:四種方法

方法一:Page.RegisterStartupScript (傳統方式)


Page.RegisterStartupScript("key", "");

方法二:Literal 控制項輸出腳本


private void Button2_Click(object sender, EventArgs e)
{
    string script = "";
    Literal1.Text = script;
    Literal1.Visible = true;
}

方法三:RegisterClientScriptBlock (頁面載入時執行)


Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "key", "alert('Hello');", true);

方法四:隱藏欄位 + 表單提交 (適用於按鍵觸發)


// 前端 JavaScript
function SubmitKeyClick() {
    if (event.keyCode == 13) { // Enter 鍵
        event.cancelBubble = true;
        event.returnValue = false;
        document.all.FunName.value = "你要呼叫的函數名";
        document.forms[0].submit();
    }
}

// 後端 C#
public void Page_Load() {
    if (!Page.IsPostBack) return;
    
    string funName = Request.Form["FunName"] ?? "";
    switch (funName) {
        case "enter()": Enter(); break;
        case "other": OtherFunction(); break;
        default: DefaultFunction(); break;
    }
}

二、JavaScript 存取 C# 變數:三種方法

方法一:隱藏欄位


// 後端
HiddenField1.Value = "ServerValue";

// 前端
var value = document.getElementById("HiddenField1").value;

方法二:內嵌輸出語法


// 後端定義 public string MyVar = "Test";
// 前端 JavaScript
var jsVar = '<%= MyVar %>';           // 字串值
var jsVar2 = "<%= MyVar %>";          // 同樣有效

方法三:註冊啟動腳本注入變數


// 後端
string script = "";
Page.RegisterStartupScript("initVar", script);

// 前端直接使用 temp 變數

三、C# 存取 JavaScript 變數:兩種方法

方法一:隱藏欄位回傳


// 前端
document.getElementById("HiddenField1").value = jsVariable;

// 後端
string value = Request.Form["HiddenField1"];

方法二:Cookie / Session 傳遞


// 前端寫入 Cookie
document.cookie = "jsVar=" + escape(jsVariable);

// 後端讀取
string value = Request.Cookies["jsVar"]?.Value;

四、C# 呼叫 JavaScript 函式 (補充)

同上文方法一、二,關鍵在於腳本註冊時機:

  • RegisterStartupScript:頁面載入完成前執行 (適合初始化)
  • RegisterClientScriptBlock:頁面開頭輸出 (適合函式定義)
  • Literal 控制項:精確控制輸出位置

五、最佳實務建議

場景推薦方式
後端條件判斷決定是否執行 JSRegisterStartupScript
定義供前端呼叫的 JS 函式RegisterClientScriptBlock
大量動態 JS 代碼Literal 控制項
前端事件觸發後端邏輯隱藏欄位 + __doPostBack / AJAX
雙向資料交換JSON + AJAX / WebMethod

現代建議:新專案請優先使用 ASP.NET Core + JavaScript 模組化 (ES6+) + fetch/AJAX API 呼叫,避免傳統 WebForms 郵件回傳模式的複雜度。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved