Доступ к переменной C # из Javascript? - PullRequest
1 голос
/ 15 июля 2009

В моей таблице MS SQL я читаю «time_zone» для города из записи.

Затем я хочу использовать этот часовой пояс в функции Javascript для создания цифровых часов для этого города.

В настоящее время я пытаюсь установить переменную time_zone из

Вот фрагмент кода из Default.aspx:

            function showtime() {
                 zone(hiddenZone,clock);
            }
        window.onload = showtime;
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <span id="clock"></span>
    <asp:HiddenField ID="hiddenZone" runat="server" />
    <asp:Label Text="" ID="lblXml" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

Единственный C #, который у меня есть в файле Default.aspx.cs для:

hiddenZone.Value=timeZone;

Я проверил, и timeZone имеет правильное значение, считанное из базы данных.

Сообщение об ошибке, которое я получаю от JS в функции «showtime»: «hiddenZone is undefined»

Как я могу получить переменную timeZone C # в моем Javascript и использовать ее для функции?

Ответы [ 3 ]

4 голосов
/ 15 июля 2009

Вы должны проверить против скрытого идентификатора клиента.

function showtime() {
                 zone(
                      document.getElementById('<%=hiddenZone.ClientID%>'),
                      clock
                   );
            }

ASP.NET создает новые имена для объектов, которые он создает на HTML-странице, поэтому они не будут совпадать с указанным вами идентификатором.

2 голосов
/ 15 июля 2009

Вы можете использовать существующий код, заменив:

function showtime() {
    zone(hiddenZone, 'clock');
}

с

function showtime() {
    var elem = document.getElementById('<%= hiddenZone.ClientID %>');
    // if you are using ASP.NET AJAX use:
    // var elem = $get('<%= hiddenZone.ClientID %>');

    zone(elem.value, 'clock');
}

Я тоже не уверен, что делает ваша функция 'zone'. Но что-то подобное может направить вас в правильном направлении, если у вас тоже возникнут трудности:

function zone(tz, dispID) {
    var elem = document.getElementById(dispID);
    // if you are using ASP.NET AJAX use:
    // var elem = $get(dispID);

    elem.innerHTML = tz;
}

В качестве альтернативы, если это была публичная собственность на вашей странице, вы можете удалить свою ссылку на asp: HiddenField и просто использовать:

function showtime() {
    zone(<%= MyFormsTimeZoneProperty %>, clock);
}
0 голосов
/ 15 июля 2009

Поместите его в теги на стороне сервера,

        function showtime() {
             zone('<%= hiddenZone.Value %>',clock);
        }
...