har denna kodsnutt:
//kollar inloggning
int Userlevel = Convert.ToInt32(Session["Userlevel"]);
int Pagelevel = 2;
Procent.Access.Page thisPage = new Procent.Access.Page();
if (!thisPage.HasAccess(Userlevel, Pagelevel))
Server.Transfer("Login.asp");
HasAccess returnerar true eller false om Userlevel är lika eller högre än Pagelevel.
Denna kod vill man ju inte behöva klistra in på alla sidor som behörighet ska kollas på så vad gör man om koden till? En user control, server control eller vad?
Jag skulle typ vilja ha något som:
...
protected void Page_Load(object sender, EventArgs e)
{
HasAccess(2); //2=Pagelevel
...
fredrikMedlem sedan dec. 19991 072 inlägg Hej,
Tror att du tänker lite för svårt nu - om det inte är jag som inte riktigt att förstått förstås :)
Skapa en vanlig tom klass där du lägger metoden "HasAccess(int)" som kan utföra ovanstående kod för dig. Denna metod kan sedan anropas från tex "_Load" eller annat ställe i dina sidor.
//Fredrik
Du har förstått precis! :)
Nu har jag en klass som heter Page med metoden HasAccess(int).
Hämtningen på aspx-sidan ser sedan ut så här:
...
protected void Page_Load(object sender, EventArgs e)
{
//kollar inloggning
Procent.Access.Page thisPage = new Procent.Access.Page();
thisPage.HasAccess(2);
...
Fråga: Kan man på nått vis slippa sätta klassen först innan metoden körs? Alltså, att jag bara behöver skriva HasAccess(2);, inget mer?
Hmm, det går inge vidare för mig, men är man en rookie så är man! :)
Får detta felmess: Exception Details: System.Web.HttpException: Response is not available in this context.
Min Pageklass ser ut så här:
public class Page : System.Web.UI.Page
{
#region Methods
public void HasAccess(int Pagelevel)
{
int Userlevel = Convert.ToInt32(Session["Userlevel"]);
if (!Compare(Userlevel, Pagelevel))
Response.Redirect("Login.asp");
}
private bool Compare(int Userlevel, int Pagelevel)
{
if (Userlevel >= Pagelevel)
return true;
else
return false;
}
#endregion
}
Page-klassen ligger i filen Access.cs som ligger i App_Code-mappen.
mozillaMedlem sedan juli 20011 084 inlägg Inte för att jag är helt hundra på vad du vill göra, men måste du inte anropa Response via Context från en klass?
Context.Response.Redirect();
/red
Inte för att jag är helt hundra på vad du vill göra
Inte jag heller än, försöker bara lära mig!
doggelito skrev:
Fråga: Kan man på nått vis slippa sätta klassen först innan metoden körs? Alltså, att jag bara behöver skriva HasAccess(2);, inget mer?
Japp, det kan man! :)
Om aspx-sidan ärver min access-klass som i sin tur ärver ...UI.Page-klassen!
Fan, nu börjar man ju hajja detta med .NET! :)