如何在普通htmlElement的onClick事件中为asp.net中的Session设置值?

时间:2010-03-17 15:23:25

标签: c# asp.net session session-variables

我需要创建一个接收会话密钥和会话值的函数,并在普通的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,但我无法使用代码,需要在页面上处理所有内容。

5 个答案:

答案 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:

Another useful link

答案 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。感谢大家的建议。