PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ASP und dynamisches includen


medi
2008-04-11, 12:40:36
Hi,

Freundin von mir hat das Problem, dass sie während der Laufzeit dynamisch Dateien unter ASP einbinden muss. Jetzt hat ja ASP im Gegensatz zu PHP laut ihr die Eigenschaft erst zu includen und danach erst den ASP Code auszuführen, so dass eine Fallunterscheidung was includet werden soll im Normalfall ja nicht möglich sein sollte. Das Problem ist jetzt, dass sie es ermöglichen muss da sonst zu viele Dateien inkludet werden. Fällt euch was ein wie man das bewerkstelligen könnte? Sprich wärend der Laufzeit des Scriptes eine Fallunterscheidung zu treffen (zb. per Switch oder Select oder wie das in ASP geht - kenn mich da nicht aus) und dann nur eine der n Dateien einzubinden?

Sämtliche Googlevorschläge hat sie schon durchprobiert - haben aber nichts gebracht.

rotalever
2008-04-11, 13:23:20
Versteh ich nicht, was meinst du, dass es erst inkludiert und dann ausgeführt wird?

medi
2008-04-11, 13:52:02
laut ihr wird bei asp automatisch erst das file eingebunden (wahrscheinlich der code der rufenden datei mit den code der gerufenen datei verbunden) bevor anschliessend der komplette code behandelt wird.

bindet man nun aber 100 dateien ein dann blähts das ganze ganz schön auf und verbraucht zu viele ressourcen was nicht gewünscht ist.

ergo möchte sie lieber wirklich nur eine der 100 dateien einbinden und das scheint unter asp nicht so einfach zu funktionieren.

Gast
2008-04-12, 14:44:51
kannst du das mal vllt. an einem beispiel beschreiben?

Sephiroth
2008-04-12, 14:54:52
<?php
$int = 5;
if ($int == 1) {
include '1.inc.php';
// do part 1
}
if ($int == 2) {
include '2.inc.php';
// do part 2
}
if ($int == 3) {
include '3.inc.php';
// do part 3
}
if ($int == 4) {
include '4.inc.php';
// do part 4
}
if ($int == 5) {
include '5.inc.php';
// do part 5
}
?>
sowas meint er sicher und das jetzt bei asp erst alle includes ausgeführt werden und dann erst der code ausgeführt wird.

php hat sich afaik früher (bis zur 4er) auch so verhalten.
Hinweis: Für frühere Versionen als PHP 4.0.2 gilt folgendes: require() wird immer versuchen die Zieldatei zu lesen, selbst wenn die Zeile in der die Anweisung steht, nie ausgeführt wird. Eine bedingte Anweisung hat keine Auswirkungen auf require(). Wenn jedoch die Zeile in der require() steht, nie ausgeführt wird, wird auch der Code der Zieldatei nie ausgeführt werden. Ähnliches gilt für Schleifenstrukturen, diese beeinflussen das Verhalten von require() nicht. Obwohl der Code, der in der Zieldatei enthalten ist, zur Schleife gehört, wird require() selbst nur einmal ausgeführt.


Zurück zu ASP: http://www.jakober.ch/asp/asp_include.php
Wichtig: Include Dateien werden in die ASP Seite eingefügt, bevor die ganze Seite ausgeführt (interpretiert) wird.

Es müsste wie folgt funktionieren
<%
int = 5;
if (int == 1) {
%>
<!--#include #include '1.inc.php'; -->
<% // do part 1
}
if (int == 2) {
%>
<!--#include #include '2.inc.php'; -->
<% // do part 2
}
if (int == 3) {
%>
<!--#include #include '3.inc.php'; -->
<% // do part 3
}
if (int == 4) {
%>
<!--#include #include '4.inc.php'; -->
<% // do part 4
}
if (int == 5) {
%>
<!--#include #include '5.inc.php'; -->
<% // do part 5
}
%>
statt include ginge wohl auch execute, dann musst du nicht immer den asp-tag auf und zu machen

Frage: Wie kann ich Dateien in ASP dynamisch einbinden? (http://www.aspfaq.de/index.asp?RID=5&FID=14&SFI=1&ELE=1223&OPID=0&ORID=5&OSST=&OSFI=1)

rotalever
2008-04-12, 15:39:29
Achso, die includes bei ASP sind sowas wie der präprocessor bei C...

][immy
2008-04-12, 16:56:37
ich weiß zwar jetzt nicht was du mit "dateien" im allgmeinen meinst, aber ich schätze mal es geht darum ein webseite dynamisch zu erstellen. dafür bietet es sich beispielsweise an, dynamisch usercontrols nachzuladen. ein user-control ansich ist ja auch so mätig wie eine webseite kann nur ohne page nicht angezeigt werden.
das dynamische einbinden ginge z.B. über das laden von "ascx" dateien (diese müssen ja nicht direkt code behinhalten, sondern sie können ja auch nur auf eine assembly und klasse verweisen)

problematisch wird es nur dann, wenn du den state von den dingern wiedererhalten willst wenn der benutzer auf irgendeine weise ein postback durchführt und du den control-state weiterbenutzen willst.
problematisch deshalb, weil asp es in diesem fall nicht so richtig mit der dynamic zurechtkommen will. denn die controls sind erstmal verloren, müssen im page-load wieder zur seite, mit der gleichen ID, hinzugefügt werden und im Pre-Render haben sie dann wieder ihren status.

machnmal weis man bei dynamischen controls aber nicht was man zuvor erzeugt hat. an dieser stelle gibt es zwar workarounds, aber muss ich ja nicht beschreiben solange ich nicht weiß ob du diese art von dynamischen dateien meinst :)

Spack of Nation
2008-04-13, 22:32:28
Hi,

was du brauchst ist:
Server.Execute(include-datei.asp)

grüße