2016-03-10 3 views
1

Я думаю, что это невозможно, но просто спросить, есть ли какой-либо способ в классическом ASP установить значение переменной после его вызова? Пример более ясно:Установите значение переменной перед результатом рендеринга

<img src="<%=imgSrc%>" alt="An image" /> 
<% imgSrc="animage.jpg" %> 

или другой один, но просто объяснить:

<img src="<%=imgSrc%>" alt="An image" /> 
<% ASP BEFORE RENDER 
    imgSrc="animage.jpg" 
%> 

Любые советы будут хорошо;)

+0

Спасибо @Lankymart Я использую саб, но я хотел бы знать, если существует способ, чтобы предотвратить отображение документа. – Vixed

+0

«Sub» не подходит, потому что ничего не возвращается к обрабатываемой строке, тогда как если вы использовали 'Function' и возвращали строку' imgSrc', которая бы работала. В идеале, хотя вам нужно увидеть более полный пример того, что вы делаете, чтобы советовать дальше. – Lankymart

+0

Вы можете использовать 'Response.Flush' и' Response.Clear' для сброса буфера и отправки содержимого в браузер или пустого буфера и никогда не отправлять его, но это не поможет вам обойти линейный путь, в котором процессор ASP работает. – Lankymart

ответ

1

Процессор 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 
1

Я не думаю, что есть любым способом сделать это. Тем не менее, это очень плохая практика. Вы должны всегда объявлять переменные сверху и давать значения перед использованием.

+0

Я тоже так думаю, поэтому я сказал, что это просто спросить. В любом случае мы должны думать позитивно, мир полон великих и разных идей;) – Vixed