c#
  • asp.net
  • webforms
  • 2017-02-17 13 views 2 likes 
    2

    На моей странице .aspx У меня есть элемент управления меткой, где я пытаюсь установить BackColor равным выходу метода следующим образом:Попытка установить BackColor равным возвращаемому значению метода в asp.net C# webform

    <asp:Label ID="myLabel" runat="server" BackColor='<%# getColor() %>'>hello</asp:Label> 
    

    В моем коде-за меня следующее:

    public Color getColor() 
    { 
        return System.Drawing.Color.Red; 
    } 
    

    Однако, это не работает. Мой фон метки не меняет цвет на основе вывода метода.

    В моем коде-позади в разделе Page_Load, если я скажу:

    myLabel.BackColor = getColor(); 
    

    это работает. Так это не работает для меня из-за какого-то порядка операций во время загрузки страницы? Или мой синтаксис неправильный внутри элемента управления?

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

    ответ

    0

    Чтобы сделать его работу вы можете использовать DataBind метод вашей страницы, как это:

    protected void Page_Load(object sender, EventArgs e) 
    { 
        this.DataBind(); 
        // or 
        Page.DataBind(); 
        // or 
        DataBind(); 
    } 
    

    Ссылки:

    • Control.DataBind Method
    • ASP.NET data binding overview

      После частности источники данных были определены и установлены для объектов на странице .aspx, вы должны привязать данные к этим источникам данных. Вы можете использовать метод Page.DataBind или Control.DataBind для привязки данных к источникам данных.
      [...]
      Данные не передаются элементу управления, пока вы явно не вызовете метод DataBind элемента управления веб-сервера или пока не вызывается метод page.DataBind на уровне страницы. Как правило, PageDataBind (или DataBind) вызывается из события Page_Load.

    +0

    Это замечательно, спасибо. Не могли бы вы объяснить, зачем это нужно? Имеет ли он какое-то отношение к времени, когда элементы управления отображаются в сравнении с тем или иным? – Kari

    +0

    Добро пожаловать. '<%# %>' используется для привязки данных. Поэтому вам нужно будет указать, что привязать где-нибудь. Я использовал это, чтобы связать некоторые ресурсы из файлов resx в разделе head, используя 'this.Header.DataBind()'. – krlzlx

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

    • Нет связанных вопросов^_^