javascript - asp hidefield 从 javascript 参数获取空值

标签 javascript c# jquery asp.net

我正在尝试将下拉菜单中选定的参数值传递到隐藏字段。我跟踪代码以查看隐藏字段值,但它总是得到空值。

我还使用浏览器调试器跟踪了 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" />

最佳答案

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

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

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

    <asp:HiddenField ID="hdnSearchParam" runat="server" ClientIDMode="Static" />
    

更多关于ClientIDMode

关于javascript - asp hidefield 从 javascript 参数获取空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32696639/

相关文章:

c# - 将类属性作为参数传递

javascript - jQuery 找到 .Selector 但不是嵌套选择器 (.selector .selector)

javascript - 使用 Three.js 加载模型

c# - 为什么在有泛型返回值时编译器不能推断出泛型参数?

c# - EF 中的 SaveChanges() 会导致插入未添加的对象吗?

javascript - 发送电子邮件表格并在同一页面上继续

javascript - innerHTML 不循环表

javascript - 为什么 qUnit 的 assert.equal 认为这两个字符串在 IE 中是不同的?

javascript - 是否可以将文件另存为带有 header 信息的静态 html 文件?

javascript - 我无法更改构造函数中的属性