我正在尝试将参数传递给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在此上下文中未定义。 有人可以让我知道我在做什么错吗?
答案 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处理
解决方案2: 如果您的btn_Click中的代码与您的页面相关,只需使用ajax Get方法,数据将发送到您的页面,您的数据返回的数据也将由js处理
最后,如果您是网络新手,我建议您学习或实施asp.net MVC,在我看来,它比asp.net webform更灵活