c# - 在 javascript 中访问 ASP HiddenField

标签 c# javascript asp.net

我已经在这里和谷歌搜索了几天,试图弄清楚为什么我无法在 javascript 中获取 hiddenfield 变量的值。访问时,该值返回为未定义。
我在 UpdatePanel 中有一个 ASP HiddenField,它是 .aspx 网页(标准问题)中自定义用户控件的一部分。

在我的用户控件中,在 C# 中设置后,我需要在 javascript 中获取 HiddenField (hdnServer) 的 .Value。但由于某种原因,以下未获得正确的值。

C#代码中的MessageBox返回正确值(此处代码有测试值),但在javascript中访问时未定义。

用户控件.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 代码隐藏:

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;
        }
    }

以下是 HiddenField 的 asp,以防万一: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>

提前感谢您的任何建议!

编辑:删除了消息框.. 这是呈现的 html:http://pastie.org/3122247

最佳答案

为了简单起见,需要设置ClientIDMode:

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

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

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

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

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

关于c# - 在 javascript 中访问 ASP HiddenField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8721313/

相关文章:

c# - Azure 身份验证 Web 应用本地主机回复 url

c# - 如何在 MVC 路由中启用特殊字符?

c# - 实现命令行解释器

javascript - 如何使用javascript删除div中的特定元素?

javascript - Angularjs 下拉验证不起作用

asp.net - jQuery 更改列表框选择模式

c# - 加载 dll 并将其托管为 Windows 服务

c# - 使用 Entity Framework 4.1 - DB First 方法删除/添加自引用 "friend"

javascript - 如何在输入字段中存储和读取任意网址

c# - 在 Owin 中间件中重写响应