可以通过server.execute
传递参数吗?
Fx的。我在我的site.asp
IF场景中需要执行functions.asp?a=something&id=123
。这可能吗?!
在site.asp上:
dim id
id = 123
if b = "hi" then
server.execute("functions.asp?a=something&id=" & id)
else
response.write("No way dude")
end if
在functions.asp上
a = request.querystring("a")
id = request.querystring("id")
if a = "something" and cint(id) > 100 then
response.write("Yes way dude")
else
response.write("No way dude")
end if
答案 0 :(得分:5)
您无法在Server.Execute
中使用查询字符串,official documentation中明确提到了这一点。
你可以做得更好:你可以直接访问id
里面site.asp
中定义的变量functions.asp
,你也可以声明并设置另一个变量{ {1}} 击>
- site.asp:
a
- functions.asp
dim id, a
id = 123
a = "something"
server.execute("functions.asp")
击> <击> 撞击>
当它创建全新的“脚本环境”时,执行的文件将无法访问调用代码属性,方法或变量,只能访问全局请求参数,会话等。
考虑到这一点,我担心最简单的方法是使用Session变量在页面之间传递值:
if a = "something" and cint(id) > 100 then
response.write("Yes way dude")
else
response.write("No way dude")
end if
然后:
Session("id") = 123
Session("a") = "something"
答案 1 :(得分:3)
这个问题可能已经过时并已得到解决,但最佳答案并未提及所有内容,并且Microsoft.com上有明确的相关信息:
<强> Server.Execute Method 强>
以下集合和属性可用于执行的ASP页面:
正如您所看到的,Microsoft建议将变量传递给Server.Execute
方法的方式有5种。在我在Microsoft上看到这个之前,首选方法是Session
,正如最佳答案所示,因为我在Microsoft.com上的信息之前看到了这一点。但是在注意到QueryStrings
可以从上一页传递之后,我不得不说使用Session
来传递值。如果您的应用程序要求您向执行页面添加变量,则需要Session
。
但是传递变量,我会说QueryStrings
,如果您的应用程序允许灵活性,它很容易应用。我确定你知道如何使用查询字符串,但从使用Server.Execute
方法的意义上讲,你可以简单地这样做:
考虑使用ASP1.asp
和ASP2.asp
:
ASP1.asp包括:
Server.Execute("ASP2.asp")
ASP2.asp包括:
Response.Write Request("id")
致电ASP1.asp?id=123
时
您会注意到ASP2.asp也看到传递给ASP1.asp的Querystring
相同,因此它会在ASP1.asp的响应上写123
。
这比使用Session
完成任务复杂得多。
答案 2 :(得分:0)
简而言之:是的,您可以在ASP.NET页面或应用程序中将QueryString值与 Server.Execute 结合使用。
您可以在正在执行的ASPX页面(page1.aspx)中汇编的QueryString参数中传递动态变量,如下所示:
Dim intExample1 As Int = 22
Dim strExample2 As String = "hello world"
Server.Execute("page2.aspx?number=" & intExample1 & "&string=" & Server.UrlEncode(strExample2))
在此示例中,page2.aspx可以引用并使用以下值:
Request.QueryString("number")
Request.QueryString("string")
答案 3 :(得分:0)
为什么不使用#include
代替server.execute
?
我寻找差异并发现在这种特殊情况下,使用#include
是最佳解决方案:
https://en.wikibooks.org/wiki/Active_Server_Pages/Server-Side_Includes#What_it_Does
您需要在父页面中定义一些变量才能在子项中使用,因此您的解决方案可能是:
dim id, a
id = 123
a = "something"
if b = "hi" then
<!--#include file="functions.asp" -->
else
response.write("No way dude")
end if
在functions.asp上
if a = "something" and cint(id) > 100 then
response.write("Yes way dude")
else
response.write("No way dude")
end if
优点: