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

从javascript将参数传递给C#中代码隐藏中的一个函数,c#,javascript,C#,Javascript,我试图将参数传递给javascript中C#代码中的一个函数 <script type="text/javascript"> $(document).ready(function () { $("#some_id").click(function () { var id = document.getElementById('HiddenField2'); var a = <%=btn_Click(id)%

我试图将参数传递给javascript中C#代码中的一个函数

<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;
    }  

$(文档).ready(函数(){
$(“#某些id”)。单击(函数(){
var id=document.getElementById('HiddenField2');
变量a=;
});
});
代码隐藏
公共字符串btn\u单击(字符串项\u id)
{
/*做点什么*/
返回null;
}  
但这段代码总是给我上下文错误。该id未在此上下文中定义。
一些人能告诉我我做错了什么吗?

首先,
varid
是javascript,而
中的代码是C。你不能像那样在两种语言之间传递变量

其次,在本例中,
id
的值将是C#无论如何都不能使用的DOM元素。如果要在代码隐藏中获取HiddenField2的值,可以使用
HiddenField2.value


第三,因为您使用的是ASP.net,而不是jQuery的
。click
处理程序。您应该使用服务器上的
onServerClick
属性将按钮单击行为连接到
btn\u click

当您的浏览器将数据发布回ASP.net时,回发将触发C中的按钮单击事件 我不明白为什么你在这里使用Hydfield,所以我的建议不要考虑它< /P> 解决方案1: 首先,您可以在btn_中提取代码,单击http处理程序(*.ashx in asp.net),然后通过使用jQuery等js框架使用Ajax将数据发送到http处理程序,http处理程序返回的数据可以由js处理

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

最后,如果您是web新手,我建议您学习或实现asp.NETMVC,在我看来,它比asp.NETWebForm更灵活