使用jQuery获取asp:HiddenField的值

时间:2012-01-18 10:09:09

标签: jquery asp.net hiddenfield

我有两页。从第一页开始,我打开一个带有查询字符串的模态,该查询字符串包含客户端名称的值。然后我用它在打开的模态上设置一个隐藏字段。

我需要在新模态上使用TextBox来显示从第一个屏幕发送的值。

我尝试使用以下方法获取值:

var hv = $('hidClientField').val();`

但这似乎不起作用。

这是我的隐藏字段:

<asp:HiddenField ID="hidClientName" runat="server" />`

我将它设置在Page_Load后面的代码中,如下所示:

hidClientName.Value = Request.QueryString["Client_Name"] ?? "";`

非常感谢任何想法。

8 个答案:

答案 0 :(得分:49)

尝试以下任何一种

  1. 如果ASP.Net控件和javascript都在同一页面上,请使用

    var hv = $("#"+ '<%= hidClientField.ClientID %>').val();
    
  2. 如果要从某个JS文件访问控件,那么

    // 'id$' will cause jQuery to search control whose ID ends with 'hidClientField'
    var hv = $('input[id$=hidClientField]').val();
    
  3. 您可以使用类名选择器来实现相同的目的。查看this类似问题。

  4. 在asp.net中,控件id被破坏了。因此,您的代码无效。

    希望这适合你。

答案 1 :(得分:7)

您忘记了选择器中的#按ID选择:

var hv = $('#hidClientField').val();

虽然asp.net根据命名容器生成ID,因此最终可能会得到ctl1$hidClientField之类的ID。然后,您可以使用“属性结束”选择器:

var hv = $('input[id$=hidClientField]').val();

查看有关 jQuery selectors

的文档

答案 2 :(得分:5)

使用ID选择器。

var hv = $('#hidClientName').val();

或者

var hv = $('#<%=hidClientName.ClientID%>').val();

答案 3 :(得分:3)

因为jQuery对asp:HiddenField一无所知。它在HTML结构中查找<input type="hidden" name="ctl00$cph_main$HiddenFieldServerDateTime" id="ctl00_cph_main_HiddenFieldServerDateTime" ...。所以ID= HiddenFieldServerDateTime没有输入。有几种方法可以解决这个问题:

  • 使用css选择器:

    <asp:HiddenField ID="HiddenFieldServerDateTime" 
                     runat="server" 
                     CssClass="SomeStyle" />
    

    使用以下选择器:var serverDateTime = $(".SomeStyle").val();

    CssClass不是HiddenField类上的可用类(并且它没有Attributes集合,因此您无法手动添加它。)

  • 使用ClientID属性:

    var serverDateTime = $("#<%= HiddenFieldServerDateTime.ClientID %>").val();
    
  • 将隐藏字段包裹在您可以选择的内容中:

    <div class="date-time-wrap">
      <asp:HiddenField ID="..." runat="server" />
    </div>
    

    var serverDateTime = $('.date-time-wrap input[type=hidden]').val();
    

答案 4 :(得分:0)

如果您使用的是Asp.net控件,服务器将会破坏控件ID。它将一堆无关的控制树层次结构信息添加到id中。您需要引用正在渲染的实际ID,这可以通过控件上的ClientID属性(hfUser.ClientID)获得,或者以不同的,更迂回的方式访问您的控件,比如找到控件父级,然后搜索它孩子们找到了你的控制权。

如果您不必使用asp.net HiddenField控件,请尝试使用常规的旧html输入。

答案 5 :(得分:0)

你可以这样做

var hval = $('#<%= hdMarkupPercentage.ClientID%>').val();

答案 6 :(得分:0)

包含ClientIDMode =&#34;静态&#34;在你的代码中。

var obj = $('#hidClientName').val(); <asp:HiddenField ID="hidClientName" ClientIDMode="Static" runat="server" />

或者

var obj = $('#<%=hidClientName.ClientID%>').val(); <asp:HiddenField ID="hidClientName" runat="server" />

答案 7 :(得分:-1)

请尝试此代码。

 var hv = $("#<%= hidClientField.ClientID %>").val();