自从我涉足服务器端以来已经很长时间了,但在我看来,嵌入在包含的代码文件中的脚本应该正常执行。出于某种原因,似乎并非如此。
(注意 - 以下显然是基于我调试尝试的简化实现。我实际上在实际项目中得到了其他包含平面HTML和JavaScript的内容,这些内容很好。这只是ASP代码没有正确解析,< %%>标记和所有。)
INDEX CODE
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My Site</title>
</head>
<body>
<% Response.WriteFile ("includes/test.aspx") %>
</body>
</html>
包含的代码
<% response.write("boo"); %>
从服务器运行时生成的页面包含文件很好......但脚本呈现为文本。
我在哪里错了?
非常感谢你的帮助。
答案 0 :(得分:2)
我认为你可能仍然在思考一种asp经典的心态。
Asp.net WebForms尝试使用更面向对象的方法,该方法使用类,使用代码分离关注点并使用母版页和占位符继承外观,而不是使用包含。此外,WebForms在很大程度上被ASP.NET MVC所取代,后者再次改变了范式。
然而,asp-classic风格的服务器端包含仍然可以在.aspx中正常工作,但有一些限制,例如无法通过父路径包含,你也会在包含的文件中丢失你的智能感知。
要使用SSI,请使用<!--#include file="xxx.ext" -->
directive.
所以在你的例子中:
<body>
<!--#include file="includes/test.aspx" -->
</body>
test.aspx的简单地说:
<% int someInt = 123;
Response.Write(someInt);
%>
但IMO有点像用电锯敲钉子。我会完全跳过WebForms并直接进入Asp.Net MVC。
答案 1 :(得分:0)
没有什么是错的。
当您WriteFile
时,将呈现文件的内容。
ASP.NET没有服务器端的工具包括经典ASP的方式。
您需要使用控件动态构建页面,尽管您可能希望查看ASP.NET/MVC而不是WebForms,因为它更接近您使用经典ASP的方式。