将值从代码隐藏传递到Javascript

时间:2011-04-13 22:15:08

标签: c# javascript jquery asp.net ajax

我正在使用jQueryUI ProgressBar向用户显示他们使用了多少允许的文件存储空间。百分比在代码隐藏中计算,应传递给Javascript。

Aspx代码

    <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
        <script type="text/javascript">
            $(function () {
                var pct = document.getElementById("filesPercentage").value;
                $("#progressbar").progressbar({
                    value: pct
                });
            });
        </script>
    </asp:Content>

    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
      ...
     <input type="hidden" runat="server" id="filesPercentage" />                      
     <div id="progressbar"></div>         
      ...
    </asp:Content>

代码背后

protected void Page_Load(object sender, EventArgs e)
{
   filesPercentage.Value = "85";
}

好像无法从隐藏字段中获取百分比数字。任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:3)

您需要获取隐藏输入的呈现ID

var pct = document.getElementById("<%=filesPercentage.ClientID%>").value;

从您在服务器上运行输入的那一刻起,最好使用asp:HiddenField而不是input

答案 1 :(得分:2)

由于您的隐藏字段是服务器控件,因此可能会将ID生成为filesPercentage之外的其他内容(可能类似于ctl00_ctl00_filesPercentage

  • 您可能需要将生成的客户端ID应用于您的javascript document.getElementById("<%=filesPercentage.ClientID%>").value;
  • 或使用其他方式选择隐藏值,例如$('[hidden's parent element] input[type="hidden"]').val()

此外,看起来进度条值预计会有一个数字,因此您可能需要执行value: pct * 1value: parseInt(pct)

http://jsfiddle.net/pxfunc/QyZSs/

答案 2 :(得分:1)

试试这个

var pct = document.getElementById("<%=filesPercentage.ClientID %>").value;

答案 3 :(得分:0)

.net将修改您提供控件的ID以确保它是唯一的,因此您不会使用正确的ID访问它。如果为隐藏字段指定唯一的类名,则可以通过以下方式访问该值:

<input type="hidden" runat="server" id="filesPercentage" class="hiddenClass" /> 
var pct = $('.hiddenClass').val();

答案 4 :(得分:0)

这有点清洁恕我直言: - )

$("#progressbar").progressbar({
  value: $("#<%=filesPercentage.ClientID%>").val()
});