ASP.NET 更新 Master 中的元素?

发布于 2024-11-25 12:22:34 字数 369 浏览 0 评论 0原文

我是一名网页设计师,所以我很少涉足 .NET 代码。我正在做一些简单的编码,将网站一个区域中的一些代码重新用于另一个区域。如何定位母版中的元素?我在调用包含 lblError 和 pnlError 的 master 的页面中有以下内容...

    public void AddError(string error)
    {
        if (error != "")
        {
            lblError.Text = error;
            pnlError.Visible = true;
        }
    }

我收到一条错误,指出当前上下文中不存在这些项目。我如何告诉它寻找母版中的元素?

I'm a web designer so I rarely get my hands dirty in .NET code. I'm doing a bit of light coding repurposing some code from one area of a site for another. How to target elements in a master? I have the following in a page that is calling a master that contains lblError and pnlError...

    public void AddError(string error)
    {
        if (error != "")
        {
            lblError.Text = error;
            pnlError.Visible = true;
        }
    }

I'm getting an error that says the items do not exist in the current context. How to I tell it to look for the elements within the master?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暮凉 2024-12-02 12:22:34

您可以在任何页面的后面代码中使用以下内容:

var masterpage = this.Master as MyMasterPageClass;

MYMasterPageClass 是母版页的类型,转换为该类型将允许您访问页面的特定属性。

另请注意,您将无法直接访问控件,因为它们是私有的。但是,您可以在母版页的代码后面创建一个公共属性,以允许您更改它们的值。

public partial class MYMasterPageClass : System.Web.UI.MasterPage
{
    public string Error
    {
        get { return lblError.Text;}
        set { lblError.Text = value; }
    }
}

You can use the following in the code behind for any page:

var masterpage = this.Master as MyMasterPageClass;

MYMasterPageClass is the type of your master page, casting to this will allow you to access specific properties of your page.

Also note that you will not be able to access controls directly as they are private. You can, however, make a public property in the masterpage's code behind that allows you to change their values.

public partial class MYMasterPageClass : System.Web.UI.MasterPage
{
    public string Error
    {
        get { return lblError.Text;}
        set { lblError.Text = value; }
    }
}
无尽的现实 2024-12-02 12:22:34

所以我不知道这是否是最干净的方法,但以下对我有用......

   public void AddError(string error)
    {
        if (error != "")
        {
            Label mpLabel = (Label)Page.Master.FindControl("lblError");
            mpLabel.Text = error;

            Panel mpPanel = (Panel)Page.Master.FindControl("pnlError");
            mpPanel.Visible = true;
        }
    }

So I don't know if it is the cleanest way to do it, but the following worked for me...

   public void AddError(string error)
    {
        if (error != "")
        {
            Label mpLabel = (Label)Page.Master.FindControl("lblError");
            mpLabel.Text = error;

            Panel mpPanel = (Panel)Page.Master.FindControl("pnlError");
            mpPanel.Visible = true;
        }
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文