我需要创建一个接收会话密钥和会话值的函数,并在普通的HTML onClick事件上调用此函数。调用此函数时,会为Session变量分配使用我发送的值发送的密钥I.到目前为止,我有这个:
<script runat="server" type="text/C#">
protected void setSessionValue(string key, string value)
{
Session[key] = value;
}
</script>
但是当我试着打电话时,如果是这样的话:
onclick="setSessionValue('itemID','3345');"
它不起作用并给我一个错误。有帮助吗?我正在使用c#和asp.net,但我无法使用代码,需要在页面上处理所有内容。
答案 0 :(得分:2)
您无法从客户端向会话设置任何内容,因为会话存储在服务器上。
答案 1 :(得分:2)
您正尝试从客户端(Javascript)调用服务器端(C#,VB.NET)代码。
这是不可能的。
您可以通过在其上添加runat="server"
属性将HTML控件更改为服务器端 - 您还需要将类型更改为可识别服务器端的类型,即<asp:HtmlLink />
。
答案 2 :(得分:2)
您正尝试从客户端javascript调用服务器方法。您既可以像Oded所建议的那样做,也可以使用ASP.NET Ajax来实现相同的目标。
以下链接将是如何使用ASP.NET Ajax执行此操作的良好起点。
ASP.NET Ajax Exposing Webservices to Ajax
更新1:
答案 3 :(得分:0)
尝试使用
OnServerClick="setSessionValue('itemID','3345');"
而不是
onclick="setSessionValue('itemID','3345');"
答案 4 :(得分:0)
好的,我自己找到了一个解决方案,感谢您提交的所有内容,请听一听。我添加了一个javascript函数如下:
function setSessionValue(key, value) {
$.post('setSession.aspx?key=' + key + '&value=' + value);
}
并添加了一个包含以下代码的aspx文件:
<%@ Page Language="C#" %>
<%
Session[Request["key"]] = Request["value"];
%>
基本上这个工作得很好,我需要的只是一个小jQuery。感谢大家的建议。