[英]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.