ASP.NET 隐藏标签字段的值为空

ASP.NET Empty value of Hidden Label field

我在 ASPX 页面上有一个隐藏控件,我在 JQuery 方法中设置了值。在后面的代码中,当我尝试读取值时,它为该隐藏字段提供了空值。这是代码:

.ASPX代码:

<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1"
            data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
            Sign-in as <span id="Span1" class="caret"></span>
</button>
<asp:HiddenField ID="userrole" runat="server" />

JQuery代码:

$('.dropdown-menu a').click(function () {
    $("#dropdownMenu1").html($(this).text() + '<span class="caret"></span>');
    $('#<%= userrole.ClientID%>').val($(this).text());
});

$('#Sign_in_form').submit(function (e) {
    var selectedRole = $("#dropdownMenu1").text().trim();
    if (selectedRole == "Sign-in as" || selectedRole == null || selectedRole == "") {
        alert("Please select your Role!");
        e.preventDefault();
    }
    else {
        alert("Signing in as: " + selectedRole);
    }
});

隐藏代码:

if (IsPostBack)
    {
        string role = userrole.Value; //THIS GIVES EMPTY VALUE
    }

我的问题的原因是我在一个单独的脚本文件中使用 运行 JQuery 方法(设置 ASP 隐藏标签)。我在 ASPX 页面中移动了那个方法,现在它工作正常。

您必须根据您的要求设置会话变量。

//set the value on some action...
Session["provSel"] = {value};
...
if (IsPostBack)
{
    if (Session["provSel"] != null)
    {
        string role = Session["provSel"].ToString();
    }
}