JavaScript函数在C#中返回boolean

时间:2014-02-06 17:09:41

标签: c# javascript asp.net

如何将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;

1 个答案:

答案 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的文件,它在其代码隐藏文件中有一个名为doS​​omething的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。希望它有所帮助。