Avatar billede plippert Nybegynder
25. november 2008 - 15:34 Der 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:

Server.Execute(("") & "\config\" & Request.QueryString("company_id") & "\menu\" & Request.QueryString("company_id") & ".aspx")


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)
       
       
Eller noget helt andet.
Håber nogen kan hjælpe...


:peter
Avatar billede kalp Novice
25. november 2008 - 15:58 #1
Du tilføjer en control til en placeholder sådan:

Placeholder.Controls.Add((PlaceholderMenu)Page.LoadControl("PlaceholderMenu.ascx"));

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).
Avatar billede plippert Nybegynder
25. november 2008 - 16:08 #2
Så hvordan foreslår du den endelige kode skal se du ? Det kan jeg ikke helt lure...
Avatar billede jokkejensen Novice
25. november 2008 - 16:12 #3
Server.Execute er noget man brugte til asp.

Kig på masterpages og usercontrols eller bare et nested usercontrol miljø, det skulle gerne erstatte de behov.
Avatar billede kalp Novice
25. november 2008 - 16:17 #4
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.
Avatar billede plippert Nybegynder
25. november 2008 - 16:24 #5
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ø...
Avatar billede plippert Nybegynder
25. november 2008 - 16:26 #6
;-) 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...
Avatar billede plippert Nybegynder
25. november 2008 - 16:30 #7
... 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 :-(
Avatar billede kalp Novice
25. november 2008 - 16:30 #8
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.
Avatar billede plippert Nybegynder
25. november 2008 - 16:40 #9
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?
Avatar billede kalp Novice
25. november 2008 - 16:50 #10
Ud fra den info du lige har givet er dit valg følgende.

læg menu strukturen ind i en XML fil og lav en userControl som henter menu punkterne fra XML filen (istedet for en database).

Dvs. XML filen er ikke en menu i sig selv - det er din usercontrol som i bund og grund blot er HTML når det bliver rendered til klienten.

og det skal virke - det virker som om du prøvede og benytte en XML fil som menu?

Det er som sagt ikke det jeg foreslår=).
Den skal blot indholde menu punkter til usercontrollen.
Avatar billede plippert Nybegynder
25. november 2008 - 17:53 #11
Nej. Jeg har ikke sat xml-fil ind som menu, men brugt xml som datasource. Men det virkede heller ikke...


Men hvordan ville koden se ud hvis jeg havde en usercontrol med menuen og så gerne ville putte denne usercontrol ind i en placeholder?
Avatar billede kalp Novice
25. november 2008 - 19:08 #12
Ville denne XML f.eks kunne repræsentere data der er i din menu?

<?xml version="1.0" encoding="utf-8"?>
<Menu>
  <Element>Home</Element>
  <Element>Tutorials</Element>
  <Element>Tools</Element>
  <Element>Help</Element>
  <Element>About us</Element>
</Menu>

Det svarer til en simpel menu i højre side af hjemmesiden f.eks

-> Home
-> Tutorials
-> Tools
-> Help
-> About us

Med hensyn til din usercontrol er det helt normalt c# eller vb du ligger i den.
Prøv og vælge "add new item" i VS og vælge UserControl.

Det lyder fremmed for dig fordi du måske ikke har arbejdet med UserControls før, men det er ikke noget helt vildt nyskabende.
Prøv og se=)
Avatar billede kalp Novice
25. november 2008 - 19:10 #13
XML'en skal selvfølgelig minimum indeholde dette.
<?xml version="1.0" encoding="utf-8"?>
<Menu>
  <Element href="default.aspx">Home</Element>
  <Element href="tutorials.aspx">Tutorials</Element>
  <Element href="tools.aspx">Tools</Element>
  <Element href="help.aspx">Help</Element>
  <Element href="about.aspx">About us</Element>
</Menu>
Avatar billede kalp Novice
25. november 2008 - 21:14 #14
prøv lige og lave følgende test.

Placeholder.Controls.Add((PlaceholderMenu)Page.LoadControl("PlaceholderMenu.aspx"));

og selvfølgelig ret stien til din menu..

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.
Avatar billede plippert Nybegynder
26. november 2008 - 10:32 #15
:-(
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"
%>

Når jeg gør det kan jegf sagtens bruge

<% Server.Execute(AppPreferences.GetValue("menu"))%>

hvor værdien for den key der hedder menu = stien til menuen for den enkelte kunde.

Jeg har siddet det meste af natten og kæmpet og har sq ikke tid til mere...


Ellers rigtig mange tak for hjælpen! Smid et svar og du får point :-)


:peter
Avatar billede kalp Novice
26. november 2008 - 10:43 #16
=)

Deadline:P
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