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?
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
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…
}