簡體   English   中英

在ASP classic中使用VBScript重定向響應輸出

[英]Redirect response output with VBScript in ASP classic

在簡單的.asp文件中, <% %>標記之外的任何內容都將直接發送到輸出緩沖區。 此外,計算<%= %>標記中的表達式並將其發送到輸出緩沖區。

我想重定向它,以便在我建立的某些上下文中,這兩個構造的結果被發送到我控制的緩沖區。 如果可能的話,我希望能夠動態地執行此操作,以便我可以在運行時將輸出重定向到不同的緩沖區。

問題是開放式的,很大程度上是因為我將計划圍繞這個解決方案構建的東西。 我可以使用任何存在的方式來捕獲此輸出。 性能和易用性不是主要考慮因素。

這是這個問題的續集,我嘗試了一種可能的解決方案,結果證明不起作用。

這不是一個真正的解決方案,但它是我能想到的最好的解決方案:

    <% sub foo %>
            <h1>Hello, World!</h1>
    <% end sub %>

然后,如果需要,可以將子內容寫入響應。 可以使用GetRef操作子。 這將使用subs污染全局命名空間; 它們甚至不能成為方法,因為GetRef不能與它們一起使用。 (我第一次測試這個,我不小心踩了一個現有的功能。)

如果有可能的話,我真的想改進這個。 我很感激任何反饋。

我認為你不能在ASP中做到這一點。 您可以嘗試創建一個ISAPI篩選器,該篩選器將監視您放入其中的某些占位符的響應,並對占位符之間的數據執行不同的操作。
我不確定你的最終目標究竟是什么,所以我不知道這對你是否有用。

實際上,您正在嘗試重寫asp.dll ISAPI篩選器。 如果你真的想這樣做,你可以嘗試在asp.dll周圍編寫一個包裝器DLL來覆蓋它的WriteClient函數。 這不是直截了當的,而是在想你要完成什么的問題。

一個更簡單的解決方案是避免完全使用<% %> ,而是在代碼中組裝整個頁面(或大部分),這樣您的頁面就不過是:

<html>
<%=OutputHtml()%>
</html>

通過這種方式,您可以完全控制輸出的內容和時間。

那么<%=%>你可以編寫自己的函數:

function [=](val)
    response.write val
    ' do anything you want with val
end function

我認為另一件事是不可能的。 但您可以為要重定向的每個輸出使用<%=%>構造...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM