Bedingtes Include
Peter Tübben
- asp.net
0 Stefan Falz0 Peter Tübben0 Stefan Falz0 Peter Tübben0 Peter Tübben0 Calocybe
Hallo Leute,
ich möchte in Abhängigkeit einer Session-Variable eine Datei 'includen'. Leider funktioniert das nachfolgende Konstrukt nicht, da der Server beide Dateien gleichzeitig einbindet:
<%If Session("Sprache")="Deutsch" Then
<!--#Include File="ger.inc"-->
Else
<!--#Include File="eng.inc"-->
End If%>
Gibt es noch eine andere Möglichkeit?
Danke & Grüße ... Peter
Hallo Leute,
ich möchte in Abhängigkeit einer Session-Variable eine Datei 'includen'. Leider funktioniert das nachfolgende Konstrukt nicht, da der Server beide Dateien gleichzeitig einbindet:
<%If Session("Sprache")="Deutsch" Then
<!--#Include File="ger.inc"-->
Else
<!--#Include File="eng.inc"-->
End If%>Gibt es noch eine andere Möglichkeit?
Danke & Grüße ... Peter
Hallo,
da #include kein ASP-Tag ist, darf er auch nicht im ASP-Code stehen. Probiers mal so:
<%If Session("Sprache")="Deutsch" Then%>
<!--#Include File="ger.inc"-->
<%Else%>
<!--#Include File="eng.inc"-->
<%End If%>
Eine weitere Möglichkeit ist die Fallunterscheidung mit Select Case ...
<%
Select Case Session("Sprache")
Case "Deutsch":%><!--#include file="ger.inc" //--><%
Case Else:%><!--#include file="eng.inc" //--><%
End Select
%>
Tschau, Stefan
Tach Stefan,
da #include kein ASP-Tag ist, darf er auch
nicht im ASP-Code stehen. Probiers mal so: [...]
ja, sorry, war auch so gemeint (hatte ich nur falsch aus dem Kopf abgetippt). Es klappt aber trotzdem nicht, da der Server ZUERST die Includes ausführt, und sich dann den ASP-Code anschaut. Das Ergebnis ist dann, daß beide Includes geladen werden.
Beispielweise funktioniert das auch nicht:
<%Session("Extension")="ger"%>
<!--#Include File="datei.<%=Session("Extension")%>"-->
Danke für Deine Mühe & Grüße ... Peter
ja, sorry, war auch so gemeint (hatte ich nur falsch aus dem Kopf abgetippt). Es klappt aber trotzdem nicht, da der Server ZUERST die Includes ausführt, und sich dann den ASP-Code anschaut. Das Ergebnis ist dann, daß beide Includes geladen werden.
Hallo,
ich weiß ja nicht, auf welchem Webserver Du entwickelst, aber PWS und IIS haben mit der beschriebenen Methode absolut keine Probleme.
Siehe "Select Case ..." Statement.
Beispielweise funktioniert das auch nicht:
<%Session("Extension")="ger"%>
<!--#Include File="datei.<%=Session("Extension")%>"-->
Das kann nicht funktionieren, da der String für die Datei immer feststehen muß (Keine dynamische Zuweisung von Dateien oder Teilen davon). Sonst würde ja <!--#include file="<%=Dateinameundendung%>" //--> auch funktionieren.
Auf jeden Fall habe ich meine Includes wie oben beschrieben eingebunden und das funzt einwandfrei.
Schick mir doch mal den Quelltext der ASP-Datei und der Include-Dateien per Mail zu. Vielleicht hat isch irgendwo der Fehlerteufel eingeschlichen.
Tschau, Stefan
Hallo Stefan,
ich weiß ja nicht, auf welchem Webserver Du
entwickelst, aber PWS und IIS haben mit der
beschriebenen Methode absolut keine Probleme.
wir entwickeln auf dem IIS. Leider funktioniert es bei uns nicht. Gibt es beim IIS eine besondere Einstellung, damit er diese Anweisung akzeptiert?
Schick mir doch mal den Quelltext der ASP-Datei
und der Include-Dateien per Mail zu. Vielleicht
hat isch irgendwo der Fehlerteufel eingeschlichen.
--- Das steht in der ASP-Datei: ---
<%Session("LANG")="GER"
If Session("LANG")="GER" Then%>
<!--#Include File="start.de"-->
<%Else%>
<!--#Include File="start.en"-->
<%End If%>
--- Ende ---
--- Das steht in der start.de: --
<%
Const Hallo = "Hallo"
%>
--- Ende ---
--- Das steht in der start.en: --
<%
Const Hallo = "Hello"
%>
--- Ende ---
--- Die Fehlermeldung lautet: ---
Microsoft VBScript compilation error '800a0411'
Name redefined
/pcssupp/system/stamm/ppp/start.en, line 3
Const Hallo = "hello"
--- Ende ---
Danke für Deine Mühe & Grüße ... Peter
Nochmal Hallo Stefan,
ich weiß ja nicht, auf welchem Webserver Du
entwickelst, aber PWS und IIS haben mit der
beschriebenen Methode absolut keine Probleme.
folgendes habe ich auf der MSDN-Seite (http://msdn.microsoft.com/library/sdkdoc/iisref/iiwainc.htm) gefunden:
--- zipppp ---
<!-- This script will fail -->
<% name=(header1 & ".inc") %>
<!-- #include file="<%= name %>" -->
--- zapppp ---
somit ist es wohl offiziell...
Grüße ... Peter
Hallo Peter
somit ist es wohl offiziell...
Stimmt, steht uebrigens auch in der Hilfe vom IIS. Tja, SSI und ASP-Code darf eben nicht so gemischt werden. Wo SSI ist, muss ASP erst beendet sein, als ein %> vorher stehen. Hast Du ja dann auch gemacht, indem DU das IF und ELSE und END IF jeweils in eigene ASP-Abschnitte gesteckt hast. Nur wegen Deines speziellen Codes trat dann eben ein anderer Fehler auf. So sieht der Code nach dem Ausfuehren der Includes aus:
<%Session("LANG")="GER"
If Session("LANG")="GER" Then%>
<%
Const Hallo = "Hallo"
%>
<%Else%>
<%
Const Hallo = "Hello"
%>
<%End If%>
oder weiter aufgeloest:
<%
Session("LANG")="GER"
If Session("LANG")="GER" Then
Const Hallo = "Hallo"
Else
Const Hallo = "Hello"
End If
%>
Tja, steht leider zweimal Const auf denselben Bezeichner drin. Das ist, wie die Fehlermeldung ganz richtig sagt, eine (unzulaessige) Redefinition eines Bezeichners. (WOW! Eine aussagekraeftige Fehlermeldung von MS!) Dir wird nichts anderes Ueberigbleiben, als die Sache so ungefaehr zu machen:
<%
Session("LANG")="GER"
dim Hallo
If Session("LANG")="GER" Then
Hallo = "Hallo"
Else
Hallo = "Hello"
End If
%>
oder, wenn Du unbedingt das Const drin haben willst:
<%
const Hallo_de = "Hallo"
const Hallo_en = "Hello"
dim Hallo
Session("LANG")="GER"
If Session("LANG")="GER" Then
Hallo = Hallo_de
Else
Hallo = Hallo_en
End If
%>
Die Sachen innerhalb der If-Verzweigung natuerlich wieder schoen auf die Include-Dateien verteilen
Calocybe
Hallo Calocybe,
Tja, SSI und ASP-Code darf eben nicht so
gemischt werden.[...]
schade :-(
Nur wegen Deines speziellen Codes trat
dann eben ein anderer Fehler auf.
eben dieser spezielle Code verdeutlicht, daß das bedingte Include entgegen den Aussagen von Stefan NICHT funktioniert.
Dir wird nichts anderes Ueberigbleiben,
als die Sache so ungefaehr zu machen: [...]
ja, und gerade das wollte ich vermeiden. Naja, dann werde ich wohl in den sauren Apfel beissen müssen.
Vielen Dank für Deine Hilfe!
Grüße ... Peter