Процессор ASP обрабатывает файл ASP линейным способом.
В примере выше
<img src="<%=imgSrc%>" alt="An Image" />`
уже записаны в буфер, так что все, что приходит после этого не будет влиять на исход этой линии.
Единственным исключением является подпроцесс (хотя значения, определенные в процедуре Sub, не обязательно возвращаются в обрабатываемую линию) и вызовы функций, которые могут быть определены где угодно (верхнее дно и т. Д.), И их содержимое будет обработано до строка записывается в буфер так что-то вроде
<img src="<%= GetImage(...) %>" alt="An Image" />`
будет работать.
Для расширения этого вы должны использовать Function
для гарантируете значение включаются на линии будучи обработан Sub
не может это сделать, потому что он ничего не возвращается (технически вы можете возвращать значения из Sub
с помощью ByRef
но даже это не сработает для этого сценария, потому что Sub
должен быть вызван первым, прежде чем можно будет получить значение ByRef
).
Используя GetImage()
пример выше
'This function in this form isn't useful at all but it
'demonstrates the technique.
Function GetImage()
Dim imgSrc : imgSrc = "animage.jpg"
GetImage = imgSrc
End Function
Спасибо @Lankymart Я использую саб, но я хотел бы знать, если существует способ, чтобы предотвратить отображение документа. – Vixed
«Sub» не подходит, потому что ничего не возвращается к обрабатываемой строке, тогда как если вы использовали 'Function' и возвращали строку' imgSrc', которая бы работала. В идеале, хотя вам нужно увидеть более полный пример того, что вы делаете, чтобы советовать дальше. – Lankymart
Вы можете использовать 'Response.Flush' и' Response.Clear' для сброса буфера и отправки содержимого в браузер или пустого буфера и никогда не отправлять его, но это не поможет вам обойти линейный путь, в котором процессор ASP работает. – Lankymart