其中的ASP.net代码包括不执行

时间:2012-08-14 19:08:59

标签: asp.net parsing server-side-includes

自从我涉足服务器端以来已经很长时间了,但在我看来,嵌入在包含的代码文件中的脚本应该正常执行。出于某种原因,似乎并非如此。

(注意 - 以下显然是基于我调试尝试的简化实现。我实际上在实际项目中得到了其他包含平面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"); %>

从服务器运行时生成的页面包含文件很好......但脚本呈现为文本。

我在哪里错了?

非常感谢你的帮助。

2 个答案:

答案 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的方式。