1

我正在尝试从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;
    }  

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

4

2 回答 2

0

First, var id is javascript and the code within <%= %> is C#. You can't pass a variable between the languages like that.

Second, the value of id in this case is going to be a DOM element which C# can't use anyways. If you want to get the value of HiddenField2 within the code behind you can use HiddenField2.Value.

Third, since you're using ASP.net, instead of using jQuery's .click handler you should use the onServerClick attribute to wire up the button click behavior to btn_Click.

于 2013-05-11T08:30:05.653 回答
0

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

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

示例代码在这里

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

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

于 2013-05-11T10:20:00.307 回答