Если glibc
был скомпилирован с _FORTIFY_SOURCE=2
, он проверяет, находится ли используемая строка формата в сегменте кода, доступном для записи (чтобы предотвратить класс ошибок безопасности, связанных с использованием %n
для записи в контролируемые хакером области памяти) , Теперь для этого открывается glibc
и читается /proc/self/maps
, чтобы выполнить проверку.
Решения:
glibc
без _FORTIFY_SOURCE=2
. %n
(не имеет значения, находится ли он в памяти для записи или только для чтения). Свойство "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
.
Установите стиль для "отображения: ни один".
var theControl = document.getElementById("<%= txtEditBox.ClientID %>");
theControl.style.display = "none";
вместо того, чтобы использовать видимый, устанавливает его 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 = ''
Это должно скрыть управление:
theControl.style.display = 'none';
Вы не можете скрыть шоу / 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%-е право, я сделал это из памяти.
Можно использовать свойство дисплея для этого. Но поскольку Jason отметил, это - DOM DHTML (клиентское) свойство, которое абсолютно независимо от ASP.NET (серверная сторона) Свойство видимости, которое управляет рендерингом.
theControl.style.display = "none";
Дисплея Вы хотите установить свойство стиля отображения ни на 'один' (для сокрытия) или null
для показа.
var theControl = document.getElementById("txtEditBox");
theControl.style.display = 'none';
theControl.style.display = null;
Выполнение его jQuery путь:
$('#txtEditBox').hide();
$('#txtEditBox').show();