3

サーバー側に手を出してから長い時間が経ちましたが、インクルードされたコード ファイルに埋め込まれたスクリプトは通常どおり実行されるはずです。これは、何らかの理由でそうではないようです。

(注-- 以下は明らかに、私のデバッグの試みに基づいた単純化された実装です。実際には、実際のプロジェクトにフラットな 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"); %>

サーバーから実行すると、結果のページにはファイルが含まれていますが、スクリプトはテキストとしてレンダリングされます。

ここでどこが間違っていますか??

どうもありがとうございました。

4

2 に答える 2

2

私はあなたがまだasp-classicの考え方で考えているかもしれないと思います。

Asp.net WebFormsは、インクルードを実行するのではなく、クラスを使用し、コードビハインドで関心の分離を行い、マスターページとプレースホルダーを使用してルックアンドフィールを継承する、よりオブジェクト指向のアプローチを使用しようとします。また、WebFormsは主にASP.NET MVCに取って代わられ、パラダイムが再び変わります。

ただし、asp-classicスタイルのサーバーサイドインクルードは、.aspxでも問題なく機能しますが、親パスを介して含めることができないなどのいくつかの制限があり、インクルードされたファイルのインテリセンスも失われます。

SSIを使用するには、<!--#include file="xxx.ext" -->ディレクティブを使用します。

したがって、あなたの例では:

<body>
    <!--#include file="includes/test.aspx" -->
</body>

test.aspxは単純です:

<% int someInt = 123;
Response.Write(someInt);
%>

しかし、IMOはチェーンソーを使って釘を打つのに少し似ています。WebFormsを完全にスキップして、Asp.NetMVCに直接向かいます。

于 2012-08-14T19:14:45.903 に答える
0

何も問題はありません。

するとWriteFile、ファイルの内容がレンダリングされます。

ASP.NETには、従来のASPのようにサーバー側に機能が含まれていません。

コントロールを使用してページを動的に構築する必要がありますが、従来のASPで行う方法に近いため、WebFormsではなくASP.NET/MVCを確認することをお勧めします。

于 2012-08-14T19:13:32.340 に答える