SLaks是正確的。您不能僅以這種方式將值從JavaScript傳遞到C#。當我需要在JavaScript(客戶端代碼)和C#(服務器端代碼)之間共享數據時,我通常爲簡單案例所做的工作是創建一個ASPX文件,它將接收JavaScript變量。
例如,在我的HTML我有這樣的:
var Id = $(this).data("Id");
$.ajax({
type: "POST",
url: "catcher.aspx/doSomething",
data: '{ Id: ' + Id + ' }',
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data) {
// Do something on success
console.log(data.d);
// data.d returns "Hello World!"
},
failure: function (response) {
// Do something on failure
}
});
有了這個,我要送和AJAX POST到一個名爲catcher.aspx文件,其中有一個在它叫做DoSomething的的WebMethod的代碼隱藏文件。看起來像這樣:
namespace myNamespace
{
public partial class functions : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod()]
public static string doSomething(string Id)
{
string something = "Hello World!";
return something;
}
}
}
要結束。 JavaScript通過AJAX POST在C#中調用方法。它發送和Id並獲得一個字符串作爲回報。您可以根據需要調整JavaScript和C#。
如果你想要發送一個布爾值到C#,POST它。
function deleteUser(userName) {
var retVal = confirm("Delete " + userName + "?");
if (retVal == true) {
document.getElementById('<% =hiddenFieldResult.ClientID %>').value = true;
// POST true to example.aspx doSomething method
} else {
document.getElementById('<% =hiddenFieldResult.ClientID %>').value = false;
// POST false to example.aspx doSomething method
}
}
趕上它在example.aspx.cs
namespace myNamespace
{
public partial class functions : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod()]
public static string doSomething(boolean Id)
{
string something = "Hello World!";
return something;
}
}
}
順便說一句,這需要jQuery的。希望它有幫助。
您需要了解**客戶端**代碼和**服務器端**代碼之間的區別。這完全不可能;你需要多個HTTP請求。 – SLaks
在調試器中運行它 - 您會發現在瀏覽器中顯示頁面並執行腳本之前,會執行這兩條C#行*。 –