如何将JavaScript变量设置为ASP.NET Session?

时间:2018-11-22 05:52:52

标签: javascript c#

如何将JavaScript变量设置为ASP.NET会话?当前价格中的值未存储在会话中,而是存储字符串“'+ price +'”。如何存储价格变量的值?

{{1}}

3 个答案:

答案 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;

希望这对您有所帮助。