首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Ext Direct JS 傳遞不定參數到 C# 後端:數組參數與 DirectEventArgs 處理

     編輯:程式設計綜合問答

場景

Ext.NET / Ext Direct 架構下,JS 調用 C# [DirectMethod],需傳遞動態數組參數。

解決方案

JS 調用端


// 參數打包為數組,第二個參數傳 null 佔位 DirectEventArgs
var paramsArray = [value1, value2, value3]; // 動態構建
App.direct.YourMethod(paramsArray, null, function(result, e) {
    if (e.status) {
        console.log('成功:', result);
    } else {
        console.error('失敗:', e.error);
    }
});

C# 後端簽名


[DirectMethod]
public object YourMethod(object[] parameters, DirectEventArgs e)
{
    // parameters 即為 JS 傳入的數組
    // e 為 Ext Direct 事件參數(含用戶會話、請求信息等)
    
    if (parameters == null || parameters.Length == 0) 
        return new { success = false, msg = "無參數" };
    
    // 類型安全訪問
    var param1 = parameters[0]?.ToString();
    var param2 = Convert.ToInt32(parameters[1]);
    // ...
    
    return new { success = true, data = "處理結果" };
}

關鍵點解析

  1. 第一參數類型用 object[] 或 JArray:接收 JS 數組,Ext Direct 自動反序列化
  2. 第二參數固定 DirectEventArgs e:框架自動注入,JS 傳 null 佔位即可
  3. 回調函數簽名:function(result, e),e.status 判斷成功,e.result 獲取返回值

進階:強類型 DTO 綁定


// 定義 DTO
public class MyRequest {
    public string Action { get; set; }
    public List Ids { get; set; }
    public Dictionary Params { get; set; }
}

// 後端直接接收 DTO(Ext Direct 支持自動綁定)
[DirectMethod]
public ActionResult MyMethod(MyRequest request, DirectEventArgs e) {
    // request 已自動填充
}

JS 端傳對象字面量:App.direct.MyMethod({action: 'del', ids: [1,2,3]}, null, cb)

常見問題排查

現象原因解決
參數為 nullJS 數組未正確構建console.log 參數再調用
類型轉換異常JS number 對應 C# long/double用 Convert.ToXxx 安全轉換
回調不執行後端拋異常未捕獲全局異常過濾器記錄日誌

掌握 object[] + DirectEventArgs 模式,靈活應對 Ext Direct 不定參數傳遞場景。

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