Toon posts:

[ASP.NET] Taaldynamische website: Javascript alerts

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met het ombouwen van een website van ASP naar ASP.NET (2.0). Deze website is taaldynamisch, de texten komen uit een MSSQL database. Om de juiste texten in de juiste taal te laten zien gebruik ik in ASP ongeveer de volgende constructie:
ASP.NET Visual Basic:
1
2
3
4
5
sSQL = "SELECT Text FROM TabText WHERE LanguageID = 3 AND ID = 200"
set rs = cn.execute(sSQL)

dim sLoginTxt
sLoginTxt = rs.fields("Text")

Wat ik vervolgens doe in mijn HTML opmaak is het volgende:
HTML:
1
2
3
4
5
<table>
    <tr>
        <td><%=sLoginTxt%></td>
    </tr>
</table>

En voor JavaScript alert een soortgelijke constructie:
JavaScript:
1
2
3
4
5
<script language="JavaScript1.2">
    function DoAlert(){
        alert("<%=sLoginTxt%>");
    }
</script>

Tot nu toe heb ik bij het omzetten van de website van ASP naar ASP.NET al behoorlijk wat profijt gehad van de <asp:Label> control, om texten in mijn HTML pagina te laten zien doe ik nu ongeveer het volgende:
ASP.NET:
1
2
3
<script runat="server">
    label_LoginText.Text = sLoginTxt
</script>

Waarbij er in het HTML gedeelte het volgende staat:
HTML:
1
2
3
4
5
<table>
    <tr>
        <td><asp:Label ID="label_LoginText" runat="server" /></td>
    </tr>
</table>

Maar nu komt het: Ik krijg het niet voor elkaar om de JavaScript alerts ook netjes de sLoginTxt string te laten weergeven. Mijn "oude" ASP code werkt niet, want hij geeft aan dat die sLoginTxt variabele niet bekend is (in het JavaScript gedeelte). Volgens de theorie klopt dat, in een script render block (<% %>) zijn variabelen lokaal.

Wat ik al geprobeerd heb:
- de search gebruikt (van GOT, Google, Experts Exchange, MSDN, enz enz)
- gekeken of Localization iets voor mij is, dat is het niet. Ik kan niet met die resource files werken (vanwege constructie website)
- geprobeerd of ik iets met een <asp:Literal> control kon:
JavaScript:
1
2
3
4
5
<script language="JavaScript1.2">
    function DoAlert(){
        alert("<asp:Literal ID="literal_LoginText" runat="server" />");
    }
</script>

Dat werkt helaas ook niet, de alert blijft leeg.

Note: Het is voor mij geen optie om met behulp van ASP.NET de JavaScript code te schrijven met behulp van response.write("<script langua... etc etc").

Mijn vraag:
Hoe kan ik in mijn JavaScript code deze taaldynamische strings verwerken?

Ik hoop dat het ongeveer duidelijk is, zo niet: vraag maar raak :)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Kijk eens wat de highlighter met je Javascriptje doet. Gaat het niet daarom mis?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22-02 00:22

Janoz

Moderator Devschuur®

!litemod

@NMe: Lijkt me niet. ASP code wordt op de server uitgevoerd waardoor het op de client uiteindelijk legitiem javascript zou moeten zijn.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-02 14:52

gorgi_19

Kruimeltjes zijn weer op :9

Waarom maak je geen gebruik trouwens van een eigen resourcemanager? En de Javascript functie kan je toevoegen mbv de functies in Page.ClientScript .

En Literals kan je 'opzoeken' dmv FindControl

[ Voor 15% gewijzigd door gorgi_19 op 26-04-2006 21:29 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Mephix
  • Registratie: Augustus 2001
  • Laatst online: 25-11-2025
Long shot.. probeer de string in javascript eens met single quotes ?

Dus alert('<%= str %>');

Ik kan me nog vaag herinneren dat asp.net op de een of andere manier niet lekker omgaat met asp code tussen dubbele quotes

Verwijderd

JavaScript:
1
2
3
4
5
<script language="JavaScript1.2"> 
    function DoAlert(){ 
        alert('<%=GetLoginTekst() %>'); 
    } 
</script>


met in codebehind:
Visual Basic:
1
2
3
Public Funtion GetLoginTekst()
  Return "literalLoginText" 'Ofzo
End function

[ Voor 16% gewijzigd door Verwijderd op 26-04-2006 22:21 ]


Verwijderd

Topicstarter
-NMe- schreef op woensdag 26 april 2006 @ 20:25:
Kijk eens wat de highlighter met je Javascriptje doet. Gaat het niet daarom mis?
Mmm, je hebt gelijk voor wat betreft de highlighting, ik heb me wat vergist in dit voorbeeld met de quotes. Maar ik heb het dus wel goed staan in mijn app....:
JavaScript:
1
2
3
4
5
 <script language="JavaScript1.2"> 
    function DoAlert(){ 
        alert('<asp:Literal ID="literal_LoginText" runat="server" />'); 
    } 
</script>

Dit werkt helaas ook niet.
Mephix schreef op woensdag 26 april 2006 @ 22:13:
Long shot.. probeer de string in javascript eens met single quotes ?

Dus alert('<%= str %>');

Ik kan me nog vaag herinneren dat asp.net op de een of andere manier niet lekker omgaat met asp code tussen dubbele quotes
Net geprobeerd, werkt helaas ook niet.
Verwijderd schreef op woensdag 26 april 2006 @ 22:21:
JavaScript:
1
2
3
4
5
<script language="JavaScript1.2"> 
    function DoAlert(){ 
        alert('<%=GetLoginTekst() %>'); 
    } 
</script>


met in codebehind:
Visual Basic:
1
2
3
Public Funtion GetLoginTekst()
  Return "literalLoginText" 'Ofzo
End function
Dit werkt wel, goeie, had ik nog niet aan gedacht..... Is het wel jammer dat ik voor elke text een function zou moeten maken. Toen bedacht ik me het volgende: op dit moment heb ik de sLoginTxt als lokale variabele in een sub gedeclareerd waarna ik hem via die Literal control in de pagina probeerde te plaatsen. Dit werkte niet. Maar wanneer ik nou de sLoginTxt als globale variabele declareer kan ik hem nog steeds in een sub vullen met text en kan ik toch de code <%= sLoginTxt %> gebruiken. Net even getest en dat werkt dus :)

Hier de code om het topic goed af te ronden:
ASP.NET:
1
2
3
4
5
6
7
8
<script runat="server">
    dim sLoginTxt as string

    sub page_load()
        'haal hier de taaldynamische text uit de database, als voorbeeld neem ik even "Please login"
        sLoginTxt = "Please login"
    end sub
</script>

Mijn JS code wordt dan:
JavaScript:
1
2
3
4
5
 <script language="JavaScript1.2"> 
    function DoAlert(){ 
        alert('<%=sLoginTxt%>'); 
    } 
</script>

Bedankt in ieder geval voor de reacties, ze brachten me net even op het idee waar ik niet eerder op kwam :)
Pagina: 1