从javascript中将参数传递给C#中后面代码中的一个函数

时间:2013-05-11 08:23:46

标签: c# javascript

我正在尝试将参数传递给C#中背后的代码中的一个函数来自javascript

<script type="text/javascript">
    $(document).ready(function () {

        $("#some_id").click(function () {
            var id = document.getElementById('HiddenField2');
            var a = <%=btn_Click(id)%>;
        });

    });
</script>
<asp:HiddenField ID="HiddenField2" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "item_id")%>' />
code behind
 public string btn_Click(String item_id)
    {
        /*do some thing*/

        return null;
    }  

但是这段代码总是给我错误的上下文。该id在此上下文中未定义。 有人可以让我知道我在做什么错吗?

2 个答案:

答案 0 :(得分:0)

首先,var id是javascript,<%= %>中的代码是C#。你不能在这样的语言之间传递一个变量。

其次,在这种情况下,id的值将成为C#无法使用的DOM元素。如果您想在后面的代码中获取HiddenField2的值,可以使用HiddenField2.Value

第三,既然你正在使用ASP.net,而不是使用jQuery的.click处理程序,你应该使用onServerClick属性将按钮点击行为连接到{{ 1}}。

答案 1 :(得分:0)

当您的浏览器将数据发布回asp.net时,Postback将触发C#中的按钮单击事件 我不明白为什么你在这里使用HiddenField,所以我的建议不考虑它

解决方案1: 首先,您可以将btn_Click中的代码提取到HttpHandler(asp.net中的* .ashx),然后使用Ajax通过使用js框架(如jQuery)将数据发送到您的HttpHandler,HttpHandler返回的数据可以由js处理

sample code is here

解决方案2: 如果您的btn_Click中的代码与您的页面相关,只需使用ajax Get方法,数据将发送到您的页面,您的数据返回的数据也将由js处理

最后,如果您是网络新手,我建议您学习或实施asp.net MVC,在我看来,它比asp.net webform更灵活