Master page si erori

Incercasem sa interceptez erorile din Master page – si nu intelegeam de ce nu merge. Pina mi-am adus aminte ca Master deriva din control – si ca, de fapt, este un control instantiat de pagina, nu invers…

Totusi, o functionalitate buna a Master este cea de afisare de erori la nivel central ( ca si cum ai avea un control de afisare erori).
In App_Code se adauga un fisier .cs de forma

 
 

public
class
ErrorAdd : IValidator

{

 
 

    public ErrorAdd(string Message)

    {

        ErrorMessage = Message;

    }

 
 

 
 

    public
string ErrorMessage { get; set; }

 
 

 
 

    public
bool IsValid

    {

        get

        {

            return
false;

        }

        set

        {

 
 

        }

    }

 
 

    public
void Validate()

    {

 
 

    }

 
 

}

 

 (clar invalid…)

Apoi in Master adaugam un control ValidationSummary si urmatorul cod :

 public
void AddTheError(string Message)

    {

        ErrorAdd e = new
ErrorAdd(Message);

        this.Page.Validators.Add(e);

 
 

    }

 
 

Cam de atit e nevoie … La orice cod de pe pagina – de pilda, pe evenimente, scrieti

  try

        {//cod

  }

        catch (Exception ex)

        {

            this.Master. AddTheError(ex.Message);

        }

 Singura problema pe care o vad este sa folosesti acelasi master pentru mai multe functionalitati …Nu vrei un God Object, nu-i asa?

2 thoughts on “Master page si erori

  1. Buna
    Interesanta metoda,am incercat sa o aplic si eu, dar imi da eroare la apelul functiei AddTheError de pe pagina:

    this.Master. AddTheError(ex.Message);

    Eroarea est "System.Web.UI.Master does not contain a definition for ‘AddTheError’".

    Vreo idee?
    Multumesc
    Gabi

  2. Mda… Exista 2 posibilitati:
    1. folosesti in declaratia de paginii aspx ce master ai
    2. Convertesti Master-ul de pe pagina aspx la masterul tau, acolo unde ai adaugat AddTheError, ceva de genul:

    MasterulMeu m= this.Master as MasterulMeu;
    if(m != null)
    {
    m.AddTheError…
    }

Leave a Reply

Your email address will not be published. Required fields are marked *