Подтвердить что ты не робот

Изменение видимости метки ASP.NET с помощью JavaScript

У меня есть страница ASP.NET с кнопкой asp:, которая не отображается. Я не могу показать его с помощью JavaScript, потому что он не отображается на странице.

Что я могу сделать, чтобы решить эту проблему?

4b9b3361

Ответ 1

Если вам нужно манипулировать им на стороне клиента, вы не можете использовать свойство Visible на стороне сервера. Вместо этого установите для стиля отображения CSS значение "none". Например:

<asp:Label runat="server" id="Label1" style="display: none;" />

Затем вы можете сделать его видимым на стороне клиента:

document.getElementById('Label1').style.display = 'inherit';

Вы можете снова скрыть его:

document.getElementById('Label1').style.display = 'none';

Имейте в виду, что могут быть проблемы с ClientID более сложными, чем "Label1" на практике. Вам нужно будет использовать ClientID с getElementById, а не на стороне сервера, если они отличаются.

Ответ 2

Попробуйте это.

<asp:Button id="myButton" runat="server" style="display:none" Text="Click Me" />

<script type="text/javascript">
    function ShowButton() {
        var buttonID = '<%= myButton.ClientID %>';
        var button = document.getElementById(buttonID);
        if(button) { button.style.display = 'inherit'; }
    }
</script>

Не используйте серверный код для этого, потому что для этого потребуется обратная передача. Вместо использования Visibility = "false" вы можете просто установить свойство CSS, которое скрывает кнопку. Затем, в javascript, переключите это свойство обратно, когда вы хотите снова отобразить кнопку.

Идентификатор ClientID используется, потому что он может отличаться от идентификатора сервера, если кнопка находится внутри элемента управления Naming Container. К ним относятся группы различных сортов.

Ответ 3

Продолжая, что Дейв Уорд сказал:

  • Вы не можете установить для свойства Visible значение false, потому что элемент управления не будет отображаться.
  • Вы должны использовать свойство Style, чтобы он отображал значение none.

Страница/Конструкция управления

<asp:Label runat="server" ID="Label1" Style="display: none;" />

<asp:Button runat="server" ID="Button1" />

Код за

Где-то в разделе загрузки:

Label label1 = (Label)FindControl("Label1");
((Label)FindControl("Button1")).OnClientClick = "ToggleVisibility('" + label1.ClientID + "')";

Файл Javascript

function ToggleVisibility(elementID)
{
    var element = document.getElementByID(elementID);

    if (element.style.display = 'none')
    {
        element.style.display = 'inherit';
    }
    else
    {
        element.style.display = 'none';
    }
}

Конечно, если вы не хотите переключаться, а просто показывать кнопку/метку, тогда соответствующим образом настройте javascript-метод.

Важным моментом здесь является то, что вам нужно отправить информацию о ClientID элемента управления, с которым вы хотите манипулировать на стороне клиента, в файл javascript либо с установкой глобальных переменных, либо с помощью параметра функции, как в моем примере.

Ответ 4

Вы должны опасаться XSS при выполнении таких действий:

document.getElementById('<%= Label1.ClientID %>').style.display

Скорее всего, никто не сможет вмешаться с ClientID Label1 в этом случае, но, чтобы быть в безопасности, вы можете передать его значение через один из методы библиотеки AntiXss:

document.getElementById('<%= AntiXss.JavaScriptEncode(Label1.ClientID) %>').style.display

Ответ 5

Это самый простой способ:

        BtnUpload.Style.Add("display", "none");
        FileUploader.Style.Add("display", "none");
        BtnAccept.Style.Add("display", "inherit");
        BtnClear.Style.Add("display", "inherit");

У меня есть противоположность в Else, поэтому она также отображает их. Это можно найти на странице Загрузка или в методе обновления элементов управления на странице.

Ответ 6

Если вы подождали, пока страница будет загружена, а затем установите отображение кнопки в состояние "нет", это должно сработать. Затем вы можете сделать его видимым в более поздней точке.

Ответ 7

Убедитесь, что для свойства Visible установлено значение true или элемент управления не будет отображаться на странице. Затем вы можете использовать script для управления им.