我已经有很长时间没有涉足服务器端了,但在我看来,嵌入在包含的代码文件中的脚本应该可以正常执行。由于某种原因,情况似乎并非如此。
(注意——下面显然是基于我的调试尝试的简化实现。实际上,我在实际项目中得到了其他包含平面 HTML 和 JavaScript 的内容,它们呈现得很好。这只是 ASP 代码没有被正确解析,<% %> 标签和所有。)
索引代码
<%@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"); %>
从服务器运行时,生成的页面包含文件就好了……但脚本呈现为文本。
我哪里出错了??
非常感谢您的帮助。
最佳答案
我认为您可能仍在以 asp-classic 思维方式思考。
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。
关于ASP.net 代码中包含不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11959125/