最好的方法来执行用户控制代码?

时间:2011-08-19 18:16:08

标签: asp.net user-controls methods static

我在下面有这个非常简单的控制。在我使用此控件的页面上,我只想说: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 个答案:

答案 0 :(得分:2)

您不需要静态方法。在ASPX页面中声明用户控件时,可以直接通过ID引用它。

在ASPX中:

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

在后面的代码中:

UserControl1.SetMessage("Some message");

在用户控件中,将方法更改为以下内容:

public void SetMessage(string Message)
{
    lblMessage.Text = Message;
}

答案 1 :(得分:0)

静态方法无法访问控件实例中包含的项。例如;如果你有两个并发请求在运行;你调用静态方法;它会修改ucMessagePanel类的哪个实例(这甚至绕过了提供的代码无法编译的问题)?

除非您使用静态属性的值并使用实例方法将其分配给控件,否则您无法使用静态属性编辑这些控件。

除非需要在请求线程之间共享,否则应避免在ASP.NET请求处理中使用static