我想在Session中设置Dropdown选中的值。我在Code中完成了。但是对于某些条件,我必须在客户端自己做。我尝试了以下内容。但我还没解决。
<%Session["Test"] = "Welcome Mamu";%>
var session_value='<%=Session["Test"]%>';
alert(session_value);
以上工作很好。请注意,我已分配静态值(欢迎Mamu)。但是对于Dynamatic来说,
var strTest=document.getElementById('DropDownList1').value;
<%Session["Test"] = "'+ strTest +'";%>
在客户端工作正常。但是我的服务器端(Code Behind),Session [“Test”]值是'+ strTest +'。
是否有其他方法可以为Session分配值?
答案 0 :(得分:5)
你无法做你想做的事情并且混合那些2.: - )
第一个是服务器代码,第二个是客户端代码。
服务器代码先于客户端代码运行
你能做什么?
创建隐藏的输入元素:
<input type='hidden' id='h' name='h'/>
var h=document.getElementById('h') ;
h.value=document.getElementById('DropDownList1').value;
当你发布页面时:
你得到的价值是:
Session["Test"]=Request.Form["h"]+"";
答案 1 :(得分:2)
嗯,你所要求的并没有多大意义。会话存储在服务器上。您的JavaScript无法直接与其进行交互。
ASP.Net呈现页面时运行服务器代码块:
<% Some code %>
所以这会奏效:
<% Session["Test"] = "Welcome Mamu"; %>
因为您将值设置为固定字符串...这与在后面的代码中编写Session["Test"] = "Welcome Mamu";
相同。
您需要做的是将您的价值保存在隐藏字段或类似内容中,然后检索并更新代码中的会话。
<asp:hiddenfield id="ValueHiddenField" runat="Server" />
var strTest=document.getElementById('DropDownList1').value;
document.getElementById('<% ValueHiddenField.ClientId %>').value = strTest;
然后您可以更新代码中的值,如:
Session["Test"] = ValueHiddenField.Value;
答案 2 :(得分:1)
无法直接通过javascript分配会话值。
我找到了替代方法。调用函数后面的代码并分配会话值。
Javascript功能:
function InitializeRequest(path)
{
// call server side method
PageMethods.SetDownloadPath(path);
}
[System.Web.Services.WebMethod]
public static string SetDownloadPath(string strpath)
{
Page objp = new Page();
objp.Session["strDwnPath"] = strpath;
return strpath;
}
必须启用页面方法设置为true
<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>
答案 3 :(得分:-1)
$item_array_id =$_SESSION["cart"];