[ASP.NET/C#] Resources & URL parameters*

Pagina: 1
Acties:
  • 165 views sinds 30-01-2008
  • Reageer

  • Tijgertje84
  • Registratie: Augustus 2005
  • Laatst online: 04-06 14:43
Ik maak gebruik van een popup.
Hierbij wordt doormiddel van resources de content ingevuld.

Dit werkt prima.

ASP:
1
<asp:Literal ID="lpopup_tekst" runat="server" Text="<%$ Resources:Resource, popup_tekst %>"></asp:Literal>


Maar nu wil ik dmv een parameter in de url (in dit geval .aspx?id=content_naam) dat deze resource bepaald wordt.
Dus zodat dit de ene keer popup_tekst is en dan andere keer popup_tekst2 is bijvoorbeeld.
Zodat ik daarmee de content kan bepalen en dus de pagina popup.aspx kan hergebruiken voor allerlei doeleinden.

Deze code had ik geprobeerd:
ASP:
1
<asp:Literal ID="lpopup_tekst" runat="server" Text="<%$ Resources:Resource, Request.QueryString( "id" ) %>"></asp:Literal>

Ik krijg hier alleen 2 fouten:
Error 1 The server tag is not well formed.

Error 2 Literal expressions like '<%$ Resources:Resource, Request.QueryString( "id" ) %>' are not allowed. Use <asp:Literal runat="server" Text="<%$ Resources:Resource, Request.QueryString( "id" )%>" /> instead.

De 2de error is grappig te noemen aangezien die in principe al zo is....
Iemand een idee en tip?

Alvast bedankt!

P.S.
Ik maak gebruik van ASP.NET 2.0 en gebruik C# en geen VB

Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:39

gorgi_19

Kruimeltjes zijn weer op :9

Vervang bij Text de " eens door '

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Tijgertje84
  • Registratie: Augustus 2005
  • Laatst online: 04-06 14:43
gorgi_19 schreef op donderdag 24 mei 2007 @ 13:41:
Vervang bij Text de " eens door '
Hmm andere error:
Error 1 The resource object with key 'Request.QueryString( "id" )' was not found.


Maar ik ben het even anders aan het doen want ik merk dat het zo niet gaat werken.
Ik ga het nu gewoon via de Page_Load doen:

C#:
1
2
3
4
5
6
protected void Page_Load(object sender, EventArgs e)
    {
        string popuptekst;
        parameter = Server.HtmlEncode(Request.QueryString["id"]) ;
        this.lpopup_tekst.Text = parameter;
    }

Dit werkt! :)
Nu is het de bedoeling dat hij dus deze variabele gebruikt om de juiste resource te pakken.
Dus probeer ik dit
C#:
1
2
3
4
5
6
protected void Page_Load(object sender, EventArgs e)
    {
        string popuptekst;
        parameter = Server.HtmlEncode(Request.QueryString["id"]) ;
        this.lpopup_tekst.Text = Resources.Resource.popup_tekst;
    }

Nu gebruikt hij dus standaard Resources.Resource.popup_tekst en dus altijd de popup_tekst.
Ik wil dus nu zorgen dat ik die variabele parameter daar kan gebruiken.
Ik heb het geprobeerd met Equals maar dit werkt niet en krijg ik melding over dat het alleen met objecten werkt...

Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
ASP is niet hetzelfde als ASP.NET (wat jij gebruikt). Vandaar, een title-change

https://fgheysels.github.io/


  • Tijgertje84
  • Registratie: Augustus 2005
  • Laatst online: 04-06 14:43
whoami schreef op donderdag 24 mei 2007 @ 14:14:
ASP is niet hetzelfde als ASP.NET (wat jij gebruikt). Vandaar, een title-change
Dank je wilde het al vragen maar ben net te laat :)!

Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Ik ben even niet mee ....
In jouw laatste code-voorbeeld:
- wat is de inhoud van popuptekst ?
- Waarom haal je die op, als je toch altijd Resources.Resource.popup_tekst gebruikt ?

https://fgheysels.github.io/


  • Tijgertje84
  • Registratie: Augustus 2005
  • Laatst online: 04-06 14:43
whoami schreef op donderdag 24 mei 2007 @ 14:16:
Ik ben even niet mee ....
In jouw laatste code-voorbeeld:
- wat is de inhoud van popuptekst ?
- Waarom haal je die op, als je toch altijd Resources.Resource.popup_tekst gebruikt ?
op deze manier: Resources.Resource.popup_tekst haal je dus die resource op.
Maar ik wil dus juist dat laastte stuk dus die popup_tekst vervangen wordt door mijn parameter zodat ik dus ( aan de hand van een button ) andere resources kan ophalen.
Op deze manier kan ik mijn popup.aspx reusen voor andere doeleinden. Dus eigenlijk dezelfde popup maar dan met andere content :)
Hoop dat het nu een beetje duidelijk is...? :?
Misschien is die popup_tekst en popuptekst verwarrend, ik pas id wel ff aan.

Zoals het in mijn laatste code voorbeeld staat (Resources.Resource.popup_tekst) wordt de tekst "Popup Tekst" weggeschreven en dit werkt prima

De inhoud van parameter is voor deze test nu ff "popup.login_more" die dus in mijn resource list staat waar de tekst "Content voor login_more" in staat.

Maar zover kom ik dus net niet dat ik die resource kan opvragen :P

[ Voor 18% gewijzigd door Tijgertje84 op 24-05-2007 14:26 ]

Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Ja, dat weet ik ....
Wat jij dus wil is de resource-text ophalen die overeenkomt met de sleutel die je net opgehaald hebt...
Misschien kan je eens kijken naar de ResourceManager class en dan naar z'n GetString member method...

Dan kan je denk ik dit doen:
code:
1
string melp = Resources.ResourceManager.GetString (requestVariable);

[ Voor 19% gewijzigd door whoami op 24-05-2007 14:26 ]

https://fgheysels.github.io/


  • Tijgertje84
  • Registratie: Augustus 2005
  • Laatst online: 04-06 14:43
whoami schreef op donderdag 24 mei 2007 @ 14:25:
Ja, dat weet ik ....
Wat jij dus wil is de resource-text ophalen die overeenkomt met de sleutel die je net opgehaald hebt...
Misschien kan je eens kijken naar de ResourceManager class en dan naar z'n GetString member method...

Dan kan je denk ik dit doen:
code:
1
string melp = Resources.ResourceManager.GetString (requestVariable);
Nee dat werkt niet want ik kan na Resources alleen maar voor 'Resource' kiezen en niet voor 'ResourceManager'..

Ben ff aan prutsen met die resourcemanager dan en heb nu dit.

C#:
1
2
3
4
5
6
7
8
9
protected void Page_Load(object sender, EventArgs e)
    {
        ResourceManager rm = new ResourceManager("items", Assembly.GetExecutingAssembly());
        CultureInfo ci = Thread.CurrentThread.CurrentCulture;

        string popuptekst = rm.GetString("id", ci);

        this.lpopup_tekst.Text = popuptekst;
    }

Maar ik heb geen idee wat ik bij "items" neer moet zetten..... want daar krijg ik nu de foutmelding:
Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "items.resources" was correctly embedded or linked into assembly "App_Web_1k2lpdqk" at compile time, or that all the satellite assemblies required are loadable and fully signed.

Het enigste wat ik weet is dat ik mijn resources opvraag dmv Resources.Resource.name maar weet niet wat ik er mee moet doen :|

[ Voor 45% gewijzigd door Tijgertje84 op 24-05-2007 14:46 ]

Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Eh, dan ff verder kijken dan je neus lang is:
code:
1
Resources.Resource.ResourceManager

:?

Als je toch besluit om zelf een ResourceManager te creeëren, dan moet je -daar waar jij 'items' zet- de basename van je resource - file gaan zetten. (Dat staat mooi in deMSDN)

[ Voor 48% gewijzigd door whoami op 24-05-2007 14:48 ]

https://fgheysels.github.io/


  • Tijgertje84
  • Registratie: Augustus 2005
  • Laatst online: 04-06 14:43
whoami schreef op donderdag 24 mei 2007 @ 14:47:
Eh, dan ff verder kijken dan je neus lang is:
code:
1
Resources.Resource.ResourceManager

:?

Als je toch besluit om zelf een ResourceManager te creeëren, dan moet je -daar waar jij 'items' zet- de basename van je resource - file gaan zetten. (Dat staat mooi in deMSDN)
Oh Sorry
Heb het inderdaad helemaal over het hoofd gezien. Maar dat komt door de lange lijst van me resourcefile.

Anyway
C#:
1
string popuptekst = Resources.Resource.ResourceManager.GetString("id");

geeft helaas niets terug

Heb dan zelf ook dmv de base name op te vragen die vorige code geprobeerd maar ook zonder resultaat.
Resources.Resource.ResourceManager.BaseName gaf "Resources.Resource" terug.
C#:
1
2
3
4
5
6
7
8
protected void Page_Load(object sender, EventArgs e)
    {
        ResourceManager rm = new ResourceManager("Resources.Resource", Assembly.GetExecutingAssembly());
        CultureInfo ci = Thread.CurrentThread.CurrentCulture;

        string popuptekst = rm.GetString("id", ci);
        this.lpopup_tekst.Text = popuptekst;
    }

error: Make sure "Resources.Resource.resources" was correctly embedded or linked etc etc
Dus hij kent dat op een of andere manier niet :(


Edit:

Heb het gevonden :)

antwoord:
C#:
1
2
string popuptekst = Resources.Resource.ResourceManager.GetString(Request.QueryString["id"]);
        this.lpopup_tekst.Text = popuptekst;

O-)

Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H

Pagina: 1