You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中调用C#方法并传递变量?

在.NET中实现JavaScript调用C#方法并传递数据

1. ASP.NET Core(Razor Pages/MVC)

后端(C#)实现

在Razor Page的PageModel或MVC Controller中定义接收数据的处理方法:

// Razor Page 的 PageModel
public class IndexModel : PageModel
{
    public IActionResult OnPostProcessData([FromBody] MyDataModel data)
    {
        // 处理传入的数据
        var result = $"接收到的数据:{data.Name},年龄:{data.Age}";
        return new JsonResult(result);
    }
}

// 数据模型类
public class MyDataModel
{
    public string Name { get; set; }
    public int Age { get; set; }
}

前端(JavaScript)调用

通过Fetch API发送POST请求传递JSON数据:

// 构造要传递的JS变量
const userData = {
    Name: "张三",
    Age: 28
};

// 调用后端方法
fetch('/Index?handler=ProcessData', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value
    },
    body: JSON.stringify(userData)
})
.then(response => response.json())
.then(result => console.log(result))
.catch(error => console.error('请求失败:', error));

注:必须携带防伪造令牌__RequestVerificationToken,避免400错误。

2. Blazor(Server/WASM)

Blazor内置JS与C#互操作能力,步骤如下:

后端(C#)标记可调用方法

给C#方法添加[JSInvokable]特性,确保方法为public:

public class DataProcessor
{
    [JSInvokable]
    public static string ProcessData(MyDataModel data)
    {
        return $"Blazor接收到:{data.Name},年龄{data.Age}";
    }
}

// 数据模型类同上
public class MyDataModel
{
    public string Name { get; set; }
    public int Age { get; set; }
}

前端(JavaScript)调用

使用DotNet.invokeMethodAsync调用指定C#方法:

const userData = {
    Name: "李四",
    Age: 30
};

// 调用C#静态方法,替换为你的项目程序集名称
DotNet.invokeMethodAsync('你的项目程序集名称', 'ProcessData', userData)
.then(result => console.log(result))
.catch(error => console.error('调用失败:', error));

如果是实例方法,需先获取C#对象引用再调用。

3. ASP.NET Web Forms

使用[WebMethod]标记后台方法,允许前端直接调用:

后端(C#)代码

public partial class Default : System.Web.UI.Page
{
    [System.Web.Services.WebMethod]
    public static string ProcessData(MyDataModel data)
    {
        return $"Web Forms接收到:{data.Name},年龄{data.Age}";
    }
}

public class MyDataModel
{
    public string Name { get; set; }
    public int Age { get; set; }
}

前端(JavaScript)调用

通过PageMethods调用:

const userData = {
    Name: "王五",
    Age: 25
};

PageMethods.ProcessData(userData, 
    function(result) { console.log(result); },
    function(error) { console.error(error); }
);

注:页面需启用ScriptManager并设置EnablePageMethods="true"。

内容的提问来源于stack exchange,提问作者Alex Hard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:10:13