25. november 2008 - 15:34Der er
15 kommentarer og 1 løsning
VB.net Server.execute i placeholder eller Literal
Jeg har bokset med et lille problem i al for lang tid nu! I min applikation har jeg en sti til en config-fil´og en sti til kundens menu [kundenummer.aspx]
Denne stump er til kundens menufil og den passer fint:
Jeg KAN bare ikke få den sti til at ryge ind i en placeholder.
Har prøvet rigtig mange forskellige mulighder, men kan ikke få det til at virke. Det skal vel være noget i stil med (den placeholder jeg egrne vil have Menuen i, hedder PlaceholderMenu)
Dim PlaceholderMenu As New PlaceHolder PlaceholderMenu = Server.Execute(("") & "\config\" & Request.QueryString("company_id") & "\menu\" & Request.QueryString("company_id") & ".aspx", PlaceholderMenu)
Hvilket betyder du skal have en userControl, som hedder PlaceholderMenu.ascx.
Der er mange ting der undre mig ved din kode, men det vælger jeg, at ignorere. Du har koden nu til hvordan det bør gøres og så håber jeg på du kan se hvordan det burde være lavet. (ellers spørg).
Hvis vi forestiller os den sjove tanke, at jeg ikke ved hvorfor du har en decideret config fil for et firma? Laver du config filer for alle firma'er? Hvis det er tilfældet skal du kigge på GroupSections i config filer - og nøjes med 1 config fil.
Men istedet for, at beskrive hvad du har lavet vil det være nemmere hvis du beskriver hvad du gerne vil have lavet/hvordan det skulle have fungeret.
Uden at være grov;) det er bare nemmere for mig personligt end, at skulle forstå hvorfor du har lavet det på en tilsyneladende forkert måde.
Here goes. Jeg er i gang med et projekt, baseret på en ældre vb.net skabelon, hvor jeg skal have mange kunder (50-100) med samme hjemmeside-skabelon med forskeligt indhold. Og forskellig menu. Skabelonen er bygget op med to masterpages, en til forside og en til indhold-siderne. Det eneste der er forskeligt fra kunde til kunde, er en config-mappe med kundespecifikke filer i, deriblandt menuen [kundenummer.aspx].
Til de to masterpages er der tilhørende aspx-filer med vb.net koden i. Denne kode skal hente relevant indhold til den enkelte kunde. Da menuen vil være forskeilig fra kunde til kunde, skal denne hentes i den kundespecifikke mappe, der skifter navn efter kundenummer. Kundenummeret angives som et parameter i URL (?company_id=xxxx) der giver koden mulighed for at finde den rrigtige mappe med de rigtige kundefiler.
Jeg vil gerne have pæn kode og derfor vil jeg gerne have (blandt andet) menuen placeret i en Placeholder og noget code-behind der fylder denne placeholder op med den rigtige fil vha. server.execute eller noget andet der kan det samme. Hvis der noget andet end server.execute der er bedre, så sig endelig frem, men jeg tror nu nok at den er helt fin i .net-miljø...
;-) håber det beskriver det nogenlunde herover. Og du er ikke grov. Jeg er ikke programmør, men copy/paster mig igennem kode der i andre sammenhænge virker. Og jeg er (desværre) klar over at det ikke altid er god kode...
... config-mappen indeholder ligeledes en kundenummer.config med kunderelevante oplysninger, bla. kundens åbningstider, koordinater og nøgle til google-maps (og nej. Disse kan desværre ikke flyttes over i en databse i mit eksisterende setup :-(
Der er flere i øjenfaldende områder i det du skriver.
kundenummer.aspx er ikke en control og derfor kan du ikke placere den i en placeholder.
fint, det er en config mappe med filer og altså ikke en config fil der er tale om?
at du har menu'en kundenummer.aspx indikere lidt, at du har 50-100 andre filer med samme navn??
du burde kun have én fil og det bør være en usercontrol, som definere en standard menu. Menu punkterne for hver enkelt firma kan udlæses fra en database evt.
men men.. nu har du lavet det sådan der. hvis det skal virke hurtigst muligt må dit valg være og loade menu'en ind i en iframe.
Menufilerne hedder kundemenu1.aspx, kundemenu2.aspx kundemenu3.aspx osv og er placeret i mappe kunde1, kunde2, kunde3 der alle er samlet i mappen config.
Men det er ret klar tale, at jeg ikke får en .aspx vist i en placeholder! Det er også fint emd mig at have have menuen i en usercontrol. Det kan jeg sagtens leve med.
Men jeg kan desværre ikke flytte menuindholdet over i en database. Det tilllader mit setup mig ikke. Jeg i stedet forsøgt mig med at gemme menu-punkterne i xml, men det fungerede ikke som jeg ville have det, så lige nu er det med individuelle menu-filer.
Og det duer ikke at have det i iframe. Så finder jeg på noget andet.
Hvordan skal koden se ud hvis jeg gemmer menuen (helt almindelig .net kontrol menu) i en usercontrol og gerne vil have den vist i en placeholder?
aspx (Page.cs arver fra Controls) dermed burde det egentlig være muligt. Jeg har dog ikke forsøgt.. men forsøg lige for så kan vi måske alligevel ret nemt løse dit problem uden de vilde rettelser.
:-( virker heller ikke... Jeg er desværre nok nødt til at droppe det. Jeg har en anden løsning. Den er ikke køn, men den virker.
Udgangspunktet for spørgsmålet var, at jeg undrede mig over at jeg var nødt til at lave reference til min kundespecifikke config-fil i hver ContentPlaceholder
<% Dim AppPreferences As AppConfig AppPreferences = New AppConfig AppPreferences.docName = Server.MapPath("") & "\config\" & Request.QueryString("company_id") & "\" & Request.QueryString("company_id") & ".Config" %>
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.