Параметризованный включают в Классика ASP с VBScript

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

' main.asp
MyInclude("external.inc", Array("mykey", "myval"))

' external.inc
Response.Write mykey

Я сомневаюсь, что могу добраться вполне, что далеко, не читая внешний штраф, вертя его, и выполнение, но я хотел бы стать максимально близким. Кроме того, если это возможно, я предпочел бы избегать использования запроса передающая опция из соображений безопасности.

Править:

Критерии, которые я хотел бы выполнить, если это возможно:

  1. Динамическое включение (т.е. никакой SSI)
  2. Простой синтаксис для вызова (предпочтительно единственный вызов функции)
  3. Простой включают файлы (просто отрывки HTML/ASP)
  4. Передача как можно большего количества данных через.

SSI соответствует 2, 3, и 4, и я использовал бы его в heartbeat за исключением того, что я не хочу к твердому коду явные пути к своим файлам. Если я могу использовать механизм VBScript, я могу просто указать имя include и иметь включать функциональную находку он.

Чтение файла и выполнения удовлетворило бы 1, 2, и 4. 3 нарушен, потому что Вы не могли вставить прямой HTML включение. Я использую этот подход для импорта сценариев, потому что мне не нужна та способность, но с отрывками, это - необходимая вещь.

Сервер. Выполнитесь имеет 1, 2, и 3, но единственным путем (AFAICT) для передачи включать данных является к munge строка запроса. Сохранение контекста выполнения вызывающей стороны невозможно.

При записи включения, поскольку классы удовлетворили бы 1, 2, и 4. Включать файлы были бы затем сделаны значительно более сложными.

1
задан Thom Smith 28 May 2010 в 17:17
поделиться

1 ответ

Используйте функцию или класс в вашем 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
1
ответ дан 3 September 2019 в 00:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: