从asp.net中的代码隐藏访问时,从jQuery返回的值始终为null

时间:2013-10-28 07:33:19

标签: asp.net jquery-ui code-behind

我的母版页包含一个以<ul><li><li><ul/>格式动态创建的菜单。

当我点击它时,我想将其ID传递给codebehind,以便将其传递给基类以获得其权限。但是我从jQuery获得的价值在代码隐藏中总是为null - 但是我在jQuery函数中获得了价值。

<script type="text/javascript">

        $(document).ready(function () {
            $('#nav li').click(function () {      
               debugger;
                var vals = $(this).text();  
                document.getElementById('hdnForLabel').value = vals ;               
            });
        }); 
    </script>

此页面加载我在母版页中使用。

protected void Page_Load(object sender, EventArgs e)
    {       

            GetMenus();
            string pageids = hdnForLabel.Value;
            BasePage BasePage = new BasePage();
            BasePage.LoadSettings(pageids );            
    }

1 个答案:

答案 0 :(得分:0)

您是否检查过渲染的隐藏控件的ID是否真的是'hdnForLabel'?它可能是'ctl00_hdnForLabel'的一部分。 您可以使用jQuery检查是否已在客户端设置了值:

<script type="text/javascript">
    $(document).ready(function () {
        $('#nav li').click(function () {      
           debugger;
            var vals = $(this).text();  
            document.getElementById('hdnForLabel').value = vals ;               
            alert( "Value: " + $("#hdnForLabel").val());
        });
    }); 
</script>

请注意,只有当页面通过回发发送回服务器时,才能获得为hdnForLabel.Value设置的值

protected void Page_Load(object sender,EventArgs e)     {

        GetMenus();
        if (IsPostBack) {
          string pageids = hdnForLabel.Value;
          BasePage BasePage = new BasePage();
          BasePage.LoadSettings(pageids );            
        }
}