2016-09-08 3 views
1

Я использую оповещение Bootstrap, и я пытаюсь изменить класс предупреждения из статического метода в коде, но я испытываю ошибку при попытке сделать это:C# HtmlGenericControl Ошибка из статического метода

Ссылка на объект требуется для нестатического поля.

Im довольно новыми для этого, так что любая помощь будет высоко ценится

aspx.cs:

public static void alert() 
{ 
    wallboardAlert.Visible = alertVisable; 
    wallboardAlert.Attributes["class"] = alertClassType; 
} 

.aspx

<div class="" id="wallboardAlert" runat="server"> 
    <h1 id="wallboardAlertTitle" runat="server"><strong></strong></h1> 
    <h4 id="wallboardAlertBody" runat="server"></h4> 
</div> 
+0

Просто удалите 'static' из объявления. 'wallboardAlert' определяется в вашем классе страницы и должен быть доступен из метода экземпляра. –

+0

или http://stackoverflow.com/questions/14684974/asp-net-access-a-control-from-static-function –

+0

Если я удалю статику из объявления, класс, вызывающий метод предупреждения, не будет работать – user3362804

ответ

0

Вы можете определить статическую переменную для хранения текущий экземпляр формы:

private static MyFormClassName currentForm = null; // Use the real class name 

protected override void OnInit(EventArgs e) 
{ 
    currentForm = this; 
    base.OnInit(e); 
} 

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

public static void alert() 
{ 
    if (currentForm != null) 
    { 
     currentForm.wallboardAlert.Visible = currentForm.alertVisable; 
     currentForm.wallboardAlert.Attributes["class"] = currentForm.alertClassType; 
    } 
} 

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

Смежные вопросы