Avatar billede apocryphal Nybegynder
20. august 2002 - 22:53 Der er 9 kommentarer og
2 løsninger

Databinding af QueryString

Hey.

Jeg har ASP.NET miljø, bestående af 5 forskellige projekter, som deler nogle fælles ServerControls, som jeg opbevarer i en DLL-fil, i de enkelte mappers bin-mappe.

Denne DLL-fil er registeret på denne måde:
<%@ Register TagPrefix="SiteCube" Namespace="SiteCubeControls" Assembly="SiteCubeControls" %>

Jeg ønsker at anvende variablen Request.QueryString.Get("pageId") i de forskellige servercontrols, hvilket jeg har forsøgt på, ved at anvende databinding på denne måde:
<SiteCube:SingleElement pageId="<%# Request.QueryString.Get("pageId") %>" element="frontpageText" runat="server" />

Men tilsyneladende, sker Databinding FØR den har indlæst collectionen Request.QueryString - så denne returnere altid NULL på det stadie.

Jeg har forsøgt med en metode, som vil virke ved mindre belastning, men jeg vil ikke implementere en sådan, da den er usikker. I global.asax:

public static int pageId;
protected void Application_BeginRequest(Object sender, EventArgs e)
{
    pageId = Convert.ToInt32(Request.QueryString.Get("pageId"));
}

Og så databinde pageId ved:
<SiteCube:Single ..... pageId="<%# Global.pageId %>" .... />

Men hvis der sker to requests hurtigt efter hinanden, vil det andet request nå at ændre det første requests indstilling af Global.pageId variablen - så det holder ikke vand i den virkelige verden.

Jeg har også prøvet, simpelthen at databinde Request-objektet til min ServerControl - men det så ikke ud til at virke.

Nogle der har en løsning på mit problem?

Man har iøvrigt IKKE adgang til at sætte en Session-variabel fra Application_BeginRequest.

--
Jonas
Avatar billede medions Nybegynder
20. august 2002 - 23:03 #1
Prøv med Request.Param() istedet for Request.QueryString()!

//>Rune
Avatar billede odegaard Nybegynder
20. august 2002 - 23:10 #2
Du kan jo gøre det inde i onBind eventet.
Eller hvad med i Page_Load eventet at gøre som du gjorde i Application_BeginRequest ?
Avatar billede odegaard Nybegynder
20. august 2002 - 23:12 #3
dvs.
protected void Page_Load(Object sender, EventArgs e)
{
    myControl.PageID = Convert.ToInt32(Request.QueryString.Get("pageId"));
}
[...]
<SiteCube:Single ..... ID=myControl .... />
Avatar billede odegaard Nybegynder
20. august 2002 - 23:14 #4
Det du ville gøre, har iøvrigt intet med databinding at gøre (eller også har jeg misforstået noget).
Avatar billede apocryphal Nybegynder
21. august 2002 - 08:34 #5
odegaard, modellen i Page_Load-eventen, er ikke brugbar, da der IKKE er nogen aktiv (og det må der ikke være) i ASPX filen, den må KUN arbejde med ServerControls, som jeg stiller tilrådighed for en grafiker.

--
Jonas
Avatar billede odegaard Nybegynder
21. august 2002 - 09:49 #6
hvad mener du med at der ikke er nogen aktiv ?
Avatar billede apocryphal Nybegynder
21. august 2002 - 12:07 #7
Aktiv ASP kode i ASPX filen - der er kun ServerControl-tags (eller hvad de nu heddder)...

--
Jonas
Avatar billede jakobandersen Nybegynder
24. august 2002 - 01:01 #8
apocryphal du kan godt "trigge" Page_Load eventen i din kontrol hvis du blot nedarver fra page objektet.
Avatar billede apocryphal Nybegynder
24. august 2002 - 11:12 #9
Jeg nedarver allerede fra Control-klassen... Hvis jeg nedarver fra Page klassen, kan jeg så stadig godt bruge klassen som en ServerControl?

--
Jonas
Avatar billede odegaard Nybegynder
24. august 2002 - 16:31 #10
Kan du ikke blot bruge code-behind ?
Så kan du lave en "ikke-aktiv" fil og en aktiv fil. Det er jo netop idéen at designer og programmør kan arbejde næsten uafhængigt af hinanden, da de får hver sin fil at arbejde med. Så kan du lave så meget kode du ønsker.
Avatar billede jakobandersen Nybegynder
25. august 2002 - 19:34 #11
Control klassen nedarver svjh. allerede fra Page objektet så du skal bare implementere Page_Load
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester