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

时间:2015-07-11 18:42:17

标签: c# jquery html asp.net webforms

我在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
    }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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