我需要从javascript设置一个c#会话变量: 我尝试了以下方法:
var mySearchPar = "search1";
<%Session["SearchPar"] = "' + mySearchPar + '"; %>;
但是通过c#而不是在会话中看到“search1”的内容,我看到" + mySearchPar + "
谁能告诉我我做错了什么?
答案 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将存储在客户端,并且不会花费服务器的任何资源。