从javascript设置ASP.NET Session变量?

时间:2017-11-29 15:29:02

标签: javascript asp.net

我需要从javascript设置一个c#会话变量: 我尝试了以下方法:

var mySearchPar = "search1";
<%Session["SearchPar"] = "' + mySearchPar + '"; %>;

但是通过c#而不是在会话中看到“search1”的内容,我看到" + mySearchPar + "

谁能告诉我我做错了什么?

2 个答案:

答案 0 :(得分:0)

所有我都解决了我的问题,我按照你的建议。 结果是:

Sarch Html表格:

<div class="row">
    <asp:HiddenField ID="hfSearch" runat="server" ClientIDMode="static" />
    <asp:HiddenField ID="hfSearchtxt" runat="server" ClientIDMode="static" />
    <div class="col-xs-8 col-xs-offset-2" style="margin-left: 0; padding-top: 1px; padding-bottom: 2px;">
        <div class="form-group" style="width:100%;">
            <div class="input-group" style="width:100%;">
                <div class="input-group-btn search-panel">
                    <button  type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
                        <span id="search_concept">Filter by</span> <span class="caret"></span>
                    </button>
                    <ul class="dropdown-menu" role="menu">
                        <li><a href="#contains">Contains</a></li>
                        <li><a href="#its_equal">It's equal</a></li>
                        <li><a href="#greather_than">Greather than ></a></li>
                        <li><a href="#less_than">Less than < </a></li>
                        <li class="divider"></li>
                        <li><a href="#all">Anything</a></li>
                    </ul>
                </div>
                <input type="hidden" name="search_param" value="all" id="search_param">
                <input type="text" class="form-control" name="x" onkeyup="Search(this);" placeholder="Search term...">
                <span class="input-group-btn" style="float: left;">
                    <asp:LinkButton ID="lnkSearch" runat="server" OnClick="Search_Click" class="btn btn-default" type="button"><span class="glyphicon glyphicon-search"></span></asp:LinkButton>
                </span>
            </div>
        </div>
    </div>
</div>

JavaScript的:

<script type="text/javascript">
    function Search(obj) {
        document.getElementById("hfSearchtxt").value = obj.value;
        var btn = document.getElementById('<%=lnkSearch.ClientID%>');
        btn.click();
    }

    $(document).ready(function (e) {
        $('.search-panel .dropdown-menu').find('a').click(function (e) {
            e.preventDefault();
            var param = $(this).attr("href").replace("#", "");
            var concept = $(this).text();

            $('.search-panel span#search_concept').text(concept);
            $('.input-group #search_param').val(param);
            document.getElementById("hfSearch").value = concept;
        });
    });

</script>

C#

protected void Search_Click(object sender, EventArgs e)
{
    Session["SearchPar"] = this.hfSearch.Value;
    //search code body....
}

答案 1 :(得分:-1)

您应该将值存储在隐藏的input字段中,并将其存储在服务器端代码中下一个回发的会话中。

以下是一个小例子:

HTML

<asp:HiddenField ID="hfSearch" runat="server" ClientIDMode="static" />

JS

var mySearchPar = "search1";
document.getElementById("hfSearch").value = mySearchPar;

C#

// later in your click event:
Session["SearchPar"] = this.hfSearch.Value;

说实话,您似乎希望在会话中存储最后一个搜索词。在这种情况下,您不需要隐藏字段,只需访问Click事件上的asp:TextBox并将值存储在会话中。

根本不使用Session进行此类存储可能更好。会话将存储在服务器上。而是使用cookie来保留最后一次搜索。 Cookie将存储在客户端,并且不会花费服务器的任何资源。