Я хочу записать функцию, которая будет включать внешний файл, во многом как Сервер. Выполнитесь, но проведет параметры. Я знаю тот Сервер. Выполнитесь проведет параметры запроса, но я хотел бы передать данные в более общем плане. Например:
' main.asp
MyInclude("external.inc", Array("mykey", "myval"))
' external.inc
Response.Write mykey
Я сомневаюсь, что могу добраться вполне, что далеко, не читая внешний штраф, вертя его, и выполнение, но я хотел бы стать максимально близким. Кроме того, если это возможно, я предпочел бы избегать использования запроса передающая опция из соображений безопасности.
Править:
Критерии, которые я хотел бы выполнить, если это возможно:
SSI соответствует 2, 3, и 4, и я использовал бы его в heartbeat за исключением того, что я не хочу к твердому коду явные пути к своим файлам. Если я могу использовать механизм VBScript, я могу просто указать имя include и иметь включать функциональную находку он.
Чтение файла и выполнения удовлетворило бы 1, 2, и 4. 3 нарушен, потому что Вы не могли вставить прямой HTML включение. Я использую этот подход для импорта сценариев, потому что мне не нужна та способность, но с отрывками, это - необходимая вещь.
Сервер. Выполнитесь имеет 1, 2, и 3, но единственным путем (AFAICT) для передачи включать данных является к munge строка запроса. Сохранение контекста выполнения вызывающей стороны невозможно.
При записи включения, поскольку классы удовлетворили бы 1, 2, и 4. Включать файлы были бы затем сделаны значительно более сложными.
Используйте функцию или класс в вашем include:-
'' # main.asp
<!-- #include virtual="/myincludes/external.asp" -->
<%
External "myval"
%>
'' # external.asp
Function External(myval)
Response.Write myval
End Function
Для более сложных сценариев я склонен использовать класс:-
'' # main.asp
<!-- #include virtual="/myincludes/external.asp" -->
<%
Dim external : Set external = CreateExternal("myval")
... some other code..
external.DoStuff
%>
'' # external.asp
Class External
Private myval
Public Sub Init(val)
myval = val
End Sub
Public Sub DoStuff()
Response.Write myval
End Sub
End Class
Function CreateExternal(mval)
Set CreateExternal = new External
CreateExternal.Init myval
End Function