使用javascript在隐藏字段中设置值

时间:2014-08-03 15:04:40

标签: javascript asp.net session hidden-field

我有一个在ASP.NET上使用javascrip在HiddenFiled上设置值的问题 我的HiddenFiled代码是:

<asp:HiddenField ID="hidden" Value="before" runat="server" />

我在ASP.NET中的JS代码是:

function HandleIT(id) {

    alert(document.getElementById('<%=hidden.ClientID %>').value);

    document.getElementById('<%=hidden.ClientID %>').value = "test";

    alert(document.getElementById('<%=hidden.ClientID %>').value);

    <%Session["search"] = hidden.Value;%>

    window.location.assign("Search.aspx");
}

因此第一个警报显示“之前”,第二个警告显示“测试”。到现在为止还挺好。但是当它转到Search.aspx并且我正在使用Session [“search”]时它向我显示“之前” 任何想法,为什么它是幸福的?

2 个答案:

答案 0 :(得分:0)

这一行:

<%Session["search"] = hidden.Value;%>

从客户端的任何更改之前获取的代码隐藏中获取值。 因此,该值是首次渲染时字段的默认值。

修改
我认为你不能以这种方式和ASPX页面完全设置会话。 这是因为ASP.net的生命周期。 您必须进行回发以获取隐藏字段的新值。回发可能会调用完整的回发或部分回发,甚至是ajax回发。

我认为也许最初可能使用公共机构,但事实并非如此。 您可以查看This

如您所知,即使我们想要将值从javascript传递到代码隐藏,我们也必须使用像This这样的隐藏字段。

无论如何,我认为你必须在代码隐藏中设置会话的值。

答案 1 :(得分:0)

设置会话变量的代码在呈现页面时以及运行JavaScript之前运行。这是客户端n服务器端代码之间的区别。