Как Вы устанавливаете свойство “Visible” управления ASP.NET от функции JavaScript?

Если glibc был скомпилирован с _FORTIFY_SOURCE=2, он проверяет, находится ли используемая строка формата в сегменте кода, доступном для записи (чтобы предотвратить класс ошибок безопасности, связанных с использованием %n для записи в контролируемые хакером области памяти) , Теперь для этого открывается glibc и читается /proc/self/maps, чтобы выполнить проверку.

Решения:

  1. Компиляция glibc без _FORTIFY_SOURCE=2.
  2. Не используйте %n (не имеет значения, находится ли он в памяти для записи или только для чтения).
15
задан Yttrium 5 November 2008 в 23:50
поделиться

7 ответов

Свойство "Visible" управления ASP.NET определяет, будет ли оно представлено на клиенте (т.е. отправлено клиенту). Если это будет ложь, когда страница будет представлена, это никогда не будет прибывать в клиент.

Так, Вы не можете, технически, установить то свойство управления.

Тем не менее, если управление представлено на клиенте, потому что Свойство видимости верно, когда страница представляется, можно затем скрыть ее с помощью JavaScript как это:

var theControl = document.getElementById("txtEditBox");
theControl.style.display = "none";

// to show it again:
theControl.style.display = "";

, Который предполагает, что управление id атрибут действительно является "txtEditBox" на клиенте и что это уже видимо.

кроме того, который является лучшим способом скрыться/показать управление ASP.NET от функции JavaScript?

существует не обязательно "лучший" путь, хотя один лучший подход должен использовать определения классов CSS:

.invisible { display: none; }

, Когда Вы захотите скрыть что-то, динамично примените тот класс к элементу; когда Вы захотите показать его снова, удалите его. Отметьте, я полагаю, что это будет только работать на элементы, чьи display значение начинается как block.

27
ответ дан 1 December 2019 в 00:27
поделиться

Установите стиль для "отображения: ни один".

var theControl = document.getElementById("<%= txtEditBox.ClientID %>");
theControl.style.display = "none";
5
ответ дан 1 December 2019 в 00:27
поделиться

вместо того, чтобы использовать видимый, устанавливает его CSS на display:none

//css:
.invisible { display:none; }

//C#
txtEditBox.CssClass = 'invisible';
txtEditBox.CssClass = ''; // visible again

//javascript
document.getElementById('txtEditBox').className = 'invisible'
document.getElementById('txtEditBox').className = ''
5
ответ дан 1 December 2019 в 00:27
поделиться

Это должно скрыть управление:

theControl.style.display = 'none';
3
ответ дан 1 December 2019 в 00:27
поделиться

Вы не можете скрыть шоу / ASP.NET версия управления, поскольку то единственное существует в контексте сервера. Для использования JavaScript, необходимо играть с / состоянием видимости стиля средств управления.

единственный способ, чтобы сделать это должен был бы перенести управление в UpdatePanel и иметь что-то вроде этого:

<asp:UpdatePanel ID="panel" runat="server">
  <ContentTemplate>
    <asp:TextBox ID="myTextBox" runat="server" />
  </ContentTemplate>
  <Triggers>
    <asp:AsynchronousPostbackTrigger ControlID="button" EventName="Click" />
  </Triggers>
</asp:UpdatePanel>
<asp:Button ID="button" runat="server" OnClick="toggle" Text="Click!" />

Затем Вам нужно это в Вашем коде позади:

protected void toggle(object sender, EventArgs e){
  myTextBox.Visibility = !myTextBox.Visibility;
}

Теперь при нажатии кнопки, асинхронная обратная передача происходит, и она обновит UpdatePanel.

Примечание: Это не хорошо решение, поскольку это будет очень тяжелый запрос Ajax, потому что необходимо отправить ViewState.

кроме того, это не может быть 100%-е право, я сделал это из памяти.

3
ответ дан 1 December 2019 в 00:27
поделиться

Можно использовать свойство дисплея для этого. Но поскольку Jason отметил, это - DOM DHTML (клиентское) свойство, которое абсолютно независимо от ASP.NET (серверная сторона) Свойство видимости, которое управляет рендерингом.

theControl.style.display = "none";

Свойство

Дисплея
3
ответ дан 1 December 2019 в 00:27
поделиться

Вы хотите установить свойство стиля отображения ни на 'один' (для сокрытия) или null для показа.

   var theControl = document.getElementById("txtEditBox");

   theControl.style.display = 'none';

   theControl.style.display = null;

Выполнение его jQuery путь:

   $('#txtEditBox').hide();

   $('#txtEditBox').show();
1
ответ дан 1 December 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: