Лучший способ сделать код контроля пользователя позади? - PullRequest
0 голосов
/ 19 августа 2011

У меня есть очень простое управление ниже.И на странице, где я использую этот элемент управления, я бы хотел сказать: ucMessagePanel.SetMessage(...), но он не позволяет мне объявлять статический метод.Я попытался сделать это со статическими свойствами, и это прекрасно работает, но разве я не смогу использовать статические методы?

    <center>
    <asp:Panel ID="pnlMessage" runat="server" >
        <asp:Label ID="lblMessage" runat="server" />
    </asp:Panel>
</center>


public partial class ucMessagePanel : System.Web.UI.UserControl
{        
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public static void SetMessage(string message, string mssgCssClass)
    {
        lblMessage.Text = message;
        pnlMessage.CssClass = mssgCssClass;
    }
}

Ответы [ 2 ]

2 голосов
/ 19 августа 2011

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

В ASPX:

<uc:SomeUserControl ID="UserControl1" runat="server" ...>

И в коде:

UserControl1.SetMessage("Some message");

В пользовательском элементе управления измените метод следующим образом:

public void SetMessage(string Message)
{
    lblMessage.Text = Message;
}
0 голосов
/ 19 августа 2011

Статические методы не могут получить доступ к элементам, содержащимся в экземпляре элемента управления. Например; если у вас было запущено два одновременных запроса; и вы вызываете статический метод; какой экземпляр класса ucMessagePanel он мог бы изменить (это даже в обход проблемы с предоставленным кодом не удалось скомпилировать)?

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

Вам следует избегать использования static при обработке запросов ASP.NET, если только это не то, что вам нужно разделить между потоками запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...