如何从Javascript调用C#函数
我看到了这个问题的几种解决方案。然而,当我尝试自己,它不工作的很好 我试图将我的C#代码修改成这样如何从Javascript调用C#函数,javascript,c#,asp.net,Javascript,C#,Asp.net,我看到了这个问题的几种解决方案。然而,当我尝试自己,它不工作的很好 我试图将我的C#代码修改成这样 [WebMethod] protected void Show(object sender, EventArgs e) { //C# function } 但是我的asp.net没有WebMethod。我需要包括一些图书馆吗 在JS中,我做得对吗?为什么发送方和e是错误的 $(文档).ready(函数(){ var image=$(“#VImage”).html() $(“#myMo
[WebMethod]
protected void Show(object sender, EventArgs e)
{
//C# function
}
但是我的asp.net没有WebMethod。我需要包括一些图书馆吗
在JS中,我做得对吗?为什么发送方和e是错误的
$(文档).ready(函数(){
var image=$(“#VImage”).html()
$(“#myModal”).on(“show.bs.modal”,函数(){
显示(对象发送者,事件参数e);
});
});
您不应该从这样的任何地方调用函数,您调用函数的方式与声明函数的方式相同
PageMethods.Show(object sender, EventArgs e);
应该是:
var sender, e;
PageMethods.Show(sender, e);
您不应该从这样的任何地方调用函数,您调用函数的方式与声明函数的方式相同
PageMethods.Show(object sender, EventArgs e);
应该是:
var sender, e;
PageMethods.Show(sender, e);
调用C#方法的方式与尝试进行任何其他AJAX调用没有什么不同。您只需要确保C#方法正确公开。要做到这一点,你需要
- 用
[WebMethod]
- 还认为在这种情况下,它需要是
和public
static
$.ajax({
type: "POST",
url: "Default.aspx/Show",
data: "{ sender: {}, e: {} }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
console.log(msg);
},
error: function (msg) {
console.log(msg);
}
});
这样想,您需要发出一个HTTP请求,其中包含web服务器调用C#方法所需的所有信息。这意味着它需要知道方法名称和方法所需的参数
在幕后,当您发出HTTP请求时,框架从HTTP POST获取主体,并尝试反序列化JSON对象,以获取调用C#方法所需的方法和参数的名称
在您的示例中,C#方法具有签名Show(objectsender,EventArgs e)
,这意味着服务器希望从客户端获得两个对象,其中一个对象它知道足够多,可以反序列化为EventArgs
对象,以便调用Show
方法
如果可能的话,我建议将参数更改为基本类型(“string”、“int”等),或者创建您自己的parameters对象,您已经验证了它可以被.NET序列化/反序列化。调用C#方法的方式与尝试进行任何其他AJAX调用没有什么不同。您只需要确保C#方法正确公开。要做到这一点,你需要
- 用
[WebMethod]
- 还认为在这种情况下,它需要是
和public
static
$.ajax({
type: "POST",
url: "Default.aspx/Show",
data: "{ sender: {}, e: {} }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
console.log(msg);
},
error: function (msg) {
console.log(msg);
}
});
这样想,您需要发出一个HTTP请求,其中包含web服务器调用C#方法所需的所有信息。这意味着它需要知道方法名称和方法所需的参数
在幕后,当您发出HTTP请求时,框架从HTTP POST获取主体,并尝试反序列化JSON对象,以获取调用C#方法所需的方法和参数的名称
在您的示例中,C#方法具有签名Show(objectsender,EventArgs e)
,这意味着服务器希望从客户端获得两个对象,其中一个对象它知道足够多,可以反序列化为EventArgs
对象,以便调用Show
方法
如果可能的话,我建议将参数更改为基本类型('string','int',等等),或者创建您自己的parameters对象,您已经验证该对象可以通过.NET进行序列化/反序列化。您是否检查了它是否有一个
,使用您可以添加的?使用System.Web.Services如何代码>酷!我得到了它!感谢您的示例代码在语法上(缺少;
)和语义上(从void
函数返回值)都是错误的。对此表示抱歉。我会编辑它。你是否检查过它是否有一个使用你可以添加的?使用System.Web.Services如何代码>酷!我得到了它!感谢您的示例代码在语法上(缺少;
)和语义上(从void
函数返回值)都是错误的。对此表示抱歉。我会编辑它