[英]Call C# method and pass variable from JavaScript
我在用户控件中有此ASP.NET C#方法:
protected void SaveChanges(object clientArr)
{
System.Diagnostics.Debug.WriteLine("SaveChanges");
//clientArr will be a string[]
}
我希望能够调用此方法并从JavaScript端传递变量。 我知道这样做'<%=divMainContent.ClientID%>'
可以获取客户端ID。 我尝试做'<%=SaveChanges(clientArr)%>'
,但是它不起作用。 有没有可行且简单的解决方案? 最好使用'<%=%>'
(不确定它的名称)吗?
JavaScript方法:
function clickSaveChanges(element) {
var mainContentChildren = document.getElementById('<%=divMainContent.ClientID%>').childNodes;
var clientArr = new Array(mainContentChildren.length * 2);
//add stuff to clientArr
'<%=SaveChanges(clientArr)%>' //this line causes page to crash
}
您可以通过非常简单的ajax调用来实现相同的目的。 您只需要在脚本中添加JQuery即可使用ajax。
C#代码
[WebMethod]
public static void SaveChanges(object clientArr)
{
System.Diagnostics.Debug.WriteLine("SaveChanges");
//clientArr will be a string[]
}
的JavaScript
function clickSaveChanges(element) {
var mainContentChildren = document.getElementById('<%=divMainContent.ClientID%>').childNodes;
var clientArr = new Array(mainContentChildren.length * 2);
//add stuff to clientArr
String sParam = clientArr.toString();
$.ajax({
type: "POST",
url: "PageName.aspx/SaveChanges",
data: "{s:sParam}", // passing the parameter
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(retValue) {
// Do something with the return value from.Net method
}
});
}
您不能混合使用客户端JavaScript代码和服务器端C#代码。 您需要一些AJAX魔术来使其正常工作。 您需要完成以下两项工作:
您可以将请求发送到的端点。 您可以使用ASP.NET WebAPI或其他一些.NET样式终结点获取此信息。 那将取决于您当前的体系结构。 您正在使用MVC还是WebForms? 该端点从您的UI接收数据后,将负责调用SaveChanges()方法。
您将需要客户端进行AJAX调用,以将数据发送到端点。 最简单的方法是使用jQuery。 查看有关AJAX方法的文档:
http://api.jquery.com/jquery.ajax/
一个超级简单的示例如下所示:
$.ajax({
type: "POST",
url: "yourEndpointAddress",
data: {
name: "John",
location: "Boston"
}
})
.success(function (msg) {
alert("Data Saved: " + msg);
});
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.