Jag registrerar en usercontrol på sidan som vanligt och varje gång jag "lägger in den" på sidan så vill jag att controllen skall hämta en viss post ifrån en databas.
Och ifrån codefilen så anropas ett speciellt id varje gång uc:n körs.
Med classic ASPs getRows() så skulle det vara en baggis att ex. först mata in databasens innehåll med getRows() och sedan hämta det med ett unikt index varje gång UCn körs. ... Men nu är asp.net vi snackar, då vet jag inte hur jag skall göra. Tips tack :)
Kan du inte bara hämta in det från Page_Load() i din usercontrol eller förstår jag fel?
Kanske gör det ändå, om jag gör det så kanske du du menar att du vill lägga till kontroller dynamiskt.
Page.Controls.Add(..) i Page_Load() i din .aspx kanske kan vara något att kolla på då.
Ok, men måste jag kladda med sessioner? Det handlar bara om en sida, och värdet skall inte tas med till andra sidor, utan bara ifrån uc till uc så att säga.
Bör väl funka med get och set i din uc. En publik variabel som du sätter till ett värde, nästa gång du anropar en funktion så ökar du bara på med 1. Lite pseudokod:
private int x = 0;
public int X {
set {
x = value;
}
get {
return x;
}
}
Så kan du hämta o sätta din variabel från den sida där du har inkluderat din uc. Och man kan även göra så här om man vill sätta värdet i presentationslagret:
Ok, men var plussar jag på värdet?
Det var att slippa göra det i presentationslagret som jag ville skapa en global variabel som "plussades" på med ett varje gång uc:n anropades på en sida.
Detta ger alltid resultatet 0
private int x = 0;
public int cnt {
get {
return x += 1;
}
set {
x = value;
}
}
void Page_Load(object sender, EventArgs e)
{
lbl1.Text = x.ToString;
}
Ett alternativt sätt att skicka med värden är via HttpContext.Items. Klassen delas av alla objekt och kan fungera som en "cache" för varje åtkomst (request). Då blir det en baggis att få ta del av egna objekt, oberoende om de skapats i en UserControl, WebControl eller i en vanlig Page.
(Om jag nu har förstått din fråga rätt, jag är inte helt säker.)
Ok, men var plussar jag på värdet?
Det var att slippa göra det i presentationslagret som jag ville skapa en global variabel som "plussades" på med ett varje gång uc:n anropades på en sida.
Detta ger alltid resultatet 0
private int x = 0;
public int cnt {
get {
return x += 1;
}
set {
x = value;
}
}
void Page_Load(object sender, EventArgs e)
{
lbl1.Text = x.ToString;
}
Vart är den koden hämtat ifrån? Din webcontrol? I så fall så blir det 0 eftersom din variabel inte delas mellan instanserna.
Ja det är ett sätt att representera state i asp.net, men då är den unik för varje besökare, inte delad, men det var nog bara jag som tolkade dina behov fel, tolkade att alla skulle dela den, my bad.
261 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e