ASP 3.0 - проблемы Server.Execute: страдание от "ASP Amnesia" - PullRequest
1 голос
/ 14 февраля 2011

Создано два файла ASP 3.0: -Main.asp -Colors.asp


Main.asp

<%

Blah Blah Blah...

If sColor = true then
Server.Execute "Colors.asp"
End If
'If sColor is true, Pops over to Colors.asp
'Then pops right back over to here again

'Once back here again, it has no idea what
'sRed or sBlue was at all...it's as if has
'been "blank slated"...sRed? Who the heck is sRed?

If sRed then
Response.Write "Color is Red"
End If
'Does not work...skips right over...
'Who is sRed? What is sRed?
'Oh well, keep on truckin'

%>


Цвета.asp

<%
Dim sRed
sRed = instr(sString, "Red") >0

Dim sBlue
sBlue = instr(sString, "Blue") >0

Dim sGreen
sGreen = instr(sString, "Green") >0

%>


Если нужно перейти в файл Colors.asp выше и изменить / добавить его следующим образом:

<%
Dim sRed
sRed = instr(sString, "Red") >0

Dim sBlue
sBlue = instr(sString, "Blue") >0

Dim sGreen
sGreen = instr(sString, "Green") >0

If sRed then
Response.Write "Color is Red"
End If

%>

Можно получить экран с «Color is Red», когда sColor был равен true на Main.asp, а sString содержал «Red».Так что я знаю, что она добирается туда, а также возвращается обратно в Main.asp ... но каким-то образом она не имеет ни малейшего представления о тех переменных: sRed, sBlue или sGreen, которые были затемнены в Colors.asp. Как только она вернулась назадна Main.asp она невежественна.

Что дает?Почему у нее ASP AMnesia, когда она возвращается на Main.asp после того, как только что была на Colors.asp?

Кстати, у меня была девушка, которая действовала таким же образом.Так что же за ханки-панки из ASP собираются на Colors.asp?

Пожалуйста, помогите!

ASP Pee-Wee

Ответы [ 3 ]

1 голос
/ 15 февраля 2011

Выполненная страница не имеет доступа к локальным переменным на вызывающей странице и, наоборот, вызывающая страница не имеет доступа к локальным переменным на исполняемой странице.Независимо от того, объявляете ли вы их или нет, не имеет значения, что два сценария не выполняются в одном и том же контексте, не говоря уже об одной и той же области.вывод вызывающей страницы в точке, где она называется:

После того, как IIS обработает файл .asp, указанный в параметре ввода, для Server.Execute, ответ возвращается вызывающему сценарию ASP.

Следующие коллекции и свойства доступны для исполняемой страницы ASP:

* Application variables, even if they are set in the calling page.
* Session properties, even if they are set in the calling page.
* Server variables and properties, even if they are set in the calling page.
* Request collections and properties, even if they are set in the calling page. This includes Form and QueryString data passed to the calling page.
* Response collections and properties. The executed .asp file may modify HTTP headers. However, as with any .asp file, if the executed .asp file attempts to modify HTTP headers after it sends a response to the client, it generates an error.

Если файл включен в страницу вызова с помощью #include, исполняемый файл .asp не будет его использовать.Например, у вас может быть подпрограмма в файле, который включен в вашу вызывающую страницу, но исполняемый файл .asp не распознает имя подпрограммы.Вы должны включить файл в каждый исполняемый файл .asp, для которого требуется подпрограмма.

Если вы хотите передавать переменные между сценариями, вам гораздо лучше использовать директивы include.Если вам нужно передать переменные, вам придется присяжно что-то использовать, используя объект Application или Session, и я бы не советовал это.

0 голосов
/ 15 февраля 2011

Документация (http://msdn.microsoft.com/en-us/library/ms525849(v=vs.90).aspx) гласит:

Метод Execute вызывает файл .asp и обрабатывает его, как если бы он был частью вызывающего сценария ASP. Метод Executeпохож на вызов процедуры во многих языках программирования.

Если это похоже на вызов процедуры, я думаю, имеет смысл также охватывать переменные. Как сказал Ди, объявите переменные на странице вызоваи это должно работать.

0 голосов
/ 15 февраля 2011

вам, вероятно, нужно затемнить переменные на странице вызова (?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...