如何将JavaScript函数中的true / false返回给C#代码?
我的代码有什么问题?
ASP.NET
< asp:HiddenField ID="hiddenFieldResult" runat="server" />
的JavaScript
< script type="text/javascript">
< !--
function deleteUser(userName) {
var retVal = confirm("Delete " + userName + "?");
if (retVal == true) {
document.getElementById('<% =hiddenFieldResult.ClientID %>').value = true;
return true;
}
else {
document.getElementById('<% =hiddenFieldResult.ClientID %>').value = false;
return false;
}
}
//-->
</script>
C#
Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "deleteUser('" + user.userName + "');", true);
Label1.Text = "User is deleted? " + hiddenFieldResult.Value;
答案 0 :(得分:2)
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#发送布尔值,请将其发送。
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。希望它有所帮助。