在JavaScript访问ASP HiddenField [英] Accessing ASP HiddenField in javascript

查看:110
本文介绍了在JavaScript访问ASP HiddenField的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在寻找通过这里和谷歌现在几天,试图找出为什么我不能在JavaScript中hiddenfield变量的值。当访问时,值返回为未定义。结果
我有一个ASP HiddenField一个UpdatePanel这是一个的.aspx页面(标准配备)的自定义用户控件的一部分内。

I have been searching through here and google for a few days now, trying to figure out why I cannot get the value of a hiddenfield variable in javascript. When accessed, the value is returned as undefined.
I have an ASP HiddenField inside an UpdatePanel which is part of a custom user control in a .aspx web page (standard issue).

在我的用户控制,我需要在C#中设置后得到HiddenField(hdnServer)的.value的在JavaScript。但由于某些原因,以下是没有得到正确的值。

In my user control, I need to get the .Value of the HiddenField (hdnServer) in javascript after setting it in C#. But for some reason the following is not getting the correct value.

在C#code在MessageBox返回正确的值($ C $这里c的测试值),但在JavaScript访问时,是不确定的。

The MessageBox in the C# code returns the correct value (the code here has test values), but when accessed in javascript is undefined.

userControl.ascx:

userControl.ascx:

//this function is called when the timer created in document.ready() elapses
//returns the correct hdnServer value in the check. 
    var checkHdn = function () {
        var temp = document.getElementById("<%=hdnServer.ClientID%>").value;
        temp = temp.toString();
        if (temp != "") {
            $('#LoadingViewer').hide();
            clearInterval(checkSrv);

            //enable start button
            $('#startBtn').attr("Enabled", "true");
        }
    };

  function RdpConnect() {

                //serverName = undefined here.  should be ip address when set in c# 
                var serverName = document.getElementById("<%= hdnServer.ClientID %>").value;
                alert(serverName);
                if (serverName != "") {
                    MsRdpClient.Server = serverName;
                }
            };

userControl.ascx.cs code-背后:

userControl.ascx.cs code-behind:

public partial class userControl : System.Web.UI.UserControl
    {
        System.Timers.Timer timer; 

        protected void Page_Load(object sender, EventArgs e)
        {
            timer = new System.Timers.Timer(5000);
            timer.Start();
        }

        protected void testOnTick(object sender, System.Timers.ElapsedEventArgs e)
        {
                hdnServer.Value = "test value";
                startBtn.Enabled = true;
                timer.Enabled = false;
        }
    }

下面是以防万一的ASP为HiddenField:userControl.ascx:

Here is the asp for HiddenField just in case: userControl.ascx:

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
    <Triggers>
         <!--trigger not used  -->
       <!-- <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />-->
    </Triggers>
    <ContentTemplate>
        <asp:HiddenField ID="hdnServer" runat="server" />
        <asp:Label ID="Label1" Text="Loading, please wait." CssClass="loading" runat="server"
            Font-Size="XX-Large" />
    </ContentTemplate>
</asp:UpdatePanel>

感谢您提出的任何建议提前!

Thank you for any advice in advance!

编辑:消息框删除..
这里呈现的HTML: http://pastie.org/3122247

messagebox removed.. Here is rendered html: http://pastie.org/3122247

推荐答案

您需要的,如果你想设置的ClientIDMode简单:

You need to set ClientIDMode if you want to make it simple:

<asp:HiddenField runat="server" ClientIDMode="Static" Id="hidServer"/>

<script type="text/javascript">
  alert($("#hidServer").val());
</script>

或者,使用ClientID属性,如果你不设置的ClientIDMode:

Or, use the ClientID property if you don't set ClientIDMode:

<asp:HiddenField runat="server" Id="hidServer"/>

<script type="text/javascript">
  alert($("<%= hidServer.ClientID %>").val());
</script>

这篇关于在JavaScript访问ASP HiddenField的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆