c# - ASP.NET C#中大师的大师方法

标签 c# asp.net error-handling master-pages

我正在尝试为我们公司的Intranet应用程序执行错误处理方法。该错误显示在页面上,带有asp:label控件。当我进行内联编码时,这很好,但是当我尝试将代码放在母版页的方法中时,它不起作用。我收到编译错误。这是方法(在master.cs文件中):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _BASE_MASTER : System.Web.UI.MasterPage
{
    public void AddError(string strWhen, string strMessage)
    {
        lblAlert.Text += "<p>" + "Une erreur s'est produite " + strWhen + "<br/>'" + strMessage + "'</p>";
        lblAlert.RenderControl(new HtmlTextWriter(Response.Output));
    }
}

没问题...如果我在第一个内容页面中,它将起作用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _BASE_SECTEUR_BASE : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ((_BASE_MASTER)Master).AddError("TEST", "TEST2");
    }
}

它很奇怪,它给出了一个很小的错误,但是可以正常工作(在加载事件中我通常不会使用它)。

它在第二页上不起作用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class _BASE_SECTEUR_Default : System.Web.UI.Page
{
    bool errorOccured = false;
    [...]
        }
        catch (Exception e)
        {
            if (!errorOccured)
            {
                ((_BASE_MASTER)((_BASE_SECTEUR_BASE)Master).Master).AddError("lors de l'acquisition du code congé.", e.Message);
                errorOccured = true;
            }
        }
    [...]
}

尽管一切正常,但在这种情况下'_BASE_MASTER'不存在。我已经尝试了几个小时,但似乎找不到解决方案。也许有人可以帮忙?

更高的精度:

我使用2个母版页:
  • 使页面外观相似(_BASE_MASTER)的
  • 在网站的小节(_BASE_SECTEUR_BASE)中进行一些更改(例如标题)。

  • 我还检查,仔细检查,三重检查页面之间的链接。没有'AddError'方法调用,一切都很好。

    最佳答案

    如果要在母版页中调用方法,可以执行以下操作。

    // Level0 Master Page
    public partial class Root : System.Web.UI.MasterPage
    {
        public void AddError(string strWhen, string strMessage)
        {
            lblAlert.Text += "<p>" + "Une erreur s'est produite " + strWhen + "<br/>'" + strMessage + "'</p>";
        }
    }
    
    // Level1 Master Page
    public partial class OneColumn : System.Web.UI.MasterPage
    {
        public void AddError(string strWhen, string strMessage)
        {
            ((Root)Master).AddError(strWhen, strMessage);
        }
    }
    
    // Content Page
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ((OneColumn)Master).AddError("test", "test");
        }
    }
    

    关于c# - ASP.NET C#中大师的大师方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6667661/

    相关文章:

    c# - Blazor Server Scoped 在刷新页面时再次初始化

    asp.net - Azure Web应用程序-无法加载文件或程序集Newtonsoft.Json

    c# - asp.net 抑制 Internet Explorer 错误对话框

    c# - 使用 JavaScript 更改页面状态,回发时会调用旧状态

    c# - 使用 RhinoMocks,如何在没有空构造函数的情况下模拟或 stub 具体类?

    c# - GC眼中的Lazy<T>?

    c# - 使用 Excel OleDb 以工作表顺序获取工作表名称

    .net - 发布 ASP.NET 应用程序时,是否应该在 Visual Studio 配置管理器中将构建类型更改为发布?

    asp.net - 找出 .NET 创建的 HTML 元素的客户端 ID?

    python - Flask app.errorhandler与Flask-CLI一起运行时未捕获异常