在JavaScript(JS)文件中调用C#(CS)方法通常不是直接可行的,因为这两种语言运行在不同的环境中。JavaScript主要运行在浏览器端或Node.js环境中,而C#通常运行在服务器端,如.NET Core或.NET Framework应用程序中。
如果你想在JS中调用CS方法,你需要通过某种形式的服务器端通信来实现。以下是一些常见的方法:
你可以创建一个ASP.NET Web API,它暴露了一些HTTP端点,这些端点可以被JavaScript通过AJAX调用。
C# (ASP.NET Web API) 示例代码:
[Route("api/[controller]")]
public class MyController : ControllerBase
{
[HttpGet("myMethod")]
public IActionResult MyMethod()
{
// 这里写你的C#逻辑
var result = "Hello from C#!";
return Ok(result);
}
}
JavaScript (AJAX调用) 示例代码:
fetch('/api/my/myMethod')
.then(response => response.text())
.then(data => console.log(data)); // 输出: Hello from C#!
如果你需要更实时的通信,可以使用SignalR。SignalR允许服务器端代码实时推送内容到连接的客户端。
C# (SignalR Hub) 示例代码:
public class MyHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
JavaScript (SignalR 客户端) 示例代码:
const connection = new signalR.HubConnectionBuilder()
.withUrl("/myHub")
.build();
connection.on("ReceiveMessage", (user, message) => {
console.log(`${user}: ${message}`);
});
connection.start().then(() => {
connection.invoke("SendMessage", "User", "Hello from JS!");
});
对于高性能的RPC通信,你可以使用gRPC。gRPC允许你定义服务和方法,并自动生成客户端和服务器端的代码。
C# (gRPC 服务端) 示例代码:
public class GreeterService : Greeter.GreeterBase
{
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
}
}
JavaScript (gRPC 客户端) 示例代码:
const client = new Greeter('localhost:50051', credentials.createInsecure());
client.sayHello({ name: 'World' }, {}, (err, response) => {
console.log('Greeting:', response.message); // 输出: Greeting: Hello World
});
通过这些方法,你可以在JavaScript中调用C#方法,实现前后端的交互。
领取专属 10元无门槛券
手把手带您无忧上云