asp hiddenfield从javascript参数中获取空值

时间:2015-09-21 13:33:45

标签: javascript c# jquery asp.net

我正在尝试将dropdown-menu中的值选择参数传递给hidden-field。我已经跟踪代码以查看hidden-field值,并且它总是变为空值。

我还使用浏览器调试器跟踪JavaScript代码,没有发生错误。怎么了?

的JavaScript

$(document).ready(function (e) {
    $('.search-panel .dropdown-menu').find('a').click(function (e) {
        e.preventDefault();
        var param = $(this).attr("href").replace("#", "");
        var concept = $(this).text();
        $('.search-panel span#search_concept').text(concept);
        $('[id$=hdnSearchParam]').val(param);
    });
});

代码隐藏

protected void btnsearch1_Click(object sender, EventArgs e)
{
    grid.DataSource = U.Search(hdnSearchParam.Value, txtsearch.Text);
    grid.DataBind();
}

标记

<div>
    <div class="col-xs-8">
        <div class="input-group">
            <div class="input-group-btn search-panel">
                <button type="button" class="btn btn-default dropdown-toggle" 
                    data-toggle="dropdown">
                    <span id="search_concept">Filter by</span> <span class="caret"></span>
                </button>

                <ul class="dropdown-menu" role="menu">
                    <li><a href="#UserName">UserName</a></li>
                    <li><a href="#its_equal">It's equal</a></li>
                    <li><a href="#greather_than">Greather than ></a></li>
                    <li><a href="#less_than">Less than < </a></li>
                    <li class="divider"></li>
                    <li><a href="#all">Anything</a></li>
                </ul>
            </div>
            <input type="hidden" name="search_param" value="all" id="search_param" />
            <asp:TextBox ID="txtsearch" runat="server" 
                class="form-control" 
                name="x" 
                placeholder="Search term...">
            </asp:TextBox>
            <span class="input-group-btn">
                <asp:LinkButton ID="btnsearch" runat="server" 
                    CssClass="btn btn-primary"
                    OnClick="btnsearch1_Click">
                    <span class="glyphicon glyphicon-search"></span>
                </asp:LinkButton>
            </span>
        </div>
    </div>
</div>
<asp:HiddenField ID="hdnSearchParam" runat="server" />

1 个答案:

答案 0 :(得分:2)

如果不对代码进行更新,则无法从jQuery / Javascript访问ASP.NET控件。 ASP.NET在运行时更改控件的ID。您有两种选择:

  1. 使用ClientID获取控件的实际ID

    var hiddenField = $("#<%= hdnSearchParam.ClientID %>");
    
  2. 将ClientIDMode设置为static,您的jQuery将按原样运行。    (假设您使用的是.NET 4.0或更高版本)

    <asp:HiddenField ID="hdnSearchParam" runat="server" ClientIDMode="Static" />
    
  3. 有关ClientIDMode

    的更多信息