如何将JavaScript变量设置为ASP.NET会话?当前价格中的值未存储在会话中,而是存储字符串“'+ price +'”。如何存储价格变量的值?
{{1}}
答案 0 :(得分:5)
您不能直接从JS设置会话,因为会话存储在服务器上,而JS在客户端运行。
您可以为此使用隐藏的输入,例如:
<input type='hidden' id='Price' name='Price'/>
var price = el.getAttribute("Price"); //Populate price var as required
var h=document.getElementById('Price');
h.value=price; //set hidden input's value
然后获取此var price
来设置后面的代码中的会话,例如:
Session["TestSession"] = Request.Form["Price"];
答案 1 :(得分:2)
由于Session
状态在服务器端维护,因此无法直接从客户端分配。您可以对服务器端Web方法执行AJAX回调,该方法稍后会存储会话状态值:
[WebMethod(EnableSession = true)]
public void SetPrice(string value)
{
if (Session != null)
{
Session["Price"] = value;
}
}
function getCheckboxVal(el) {
var price = el.getAttribute("Price");
$.ajax({
type: 'POST',
url: 'Page.aspx/SetPrice',
data: { value: price },
success: function (data) {
// do something
}
// other AJAX settings
});
}
或使用具有runat="server"
属性的隐藏字段并分配其值以将其置于代码后:
ASPX
<asp:HiddenField ID="HiddenPrice" runat="server" />
<script>
function getCheckboxVal(el) {
var price = el.getAttribute("Price");
document.getElementById('<%= HiddenPrice.ClientID %>').value = price;
}
</script>
背后的代码
Session["Price"] = HiddenPrice.Value.ToString();
参考:Accessing & Modifying Session from Client-Side using JQuery & AJAX in ASP.NET
答案 2 :(得分:0)
我们不能直接将客户端值设置为会话。我们可以通过使用隐藏的文件来做到这一点
<asp:HiddenFieldID="hdPrice" runat="server" />
进一步获取此js价格并将其在javascript中设置为变量hprice。 该变量可以添加到会话中
Session["PriceData"] = hdPrice;
希望这对您有所帮助。