従来の ASP で記述されたサイトの疑似ユーザー コントロールを作成しました。コントロールは、親ページの iframe 内に存在する単純な asp ページ (完全な HTML ヘッダーと本文を含む) です。ポイントは、ファイルを非同期的にアップロードするための AJAX のようなインターフェイスを作成することでした (親ページには大きなフォームが含まれており、ファイルのアップロードと残りのフォームの送信を同時に行う必要はありませんでした)。
問題は、iframe ページ/ユーザー コントロールで使用されている相対 URL に関する多くの問題に遭遇していることです。iframe が子であるページに応じて、特定のページが存在するディレクトリに応じて相対 URL ベースの場所が変わるようです。
例: www.website.com/directory1/application1.asp
...
<form>
<input>
...
<iframe src="../controls/FileUpload.asp"/>
...
</form>
...
www.website.com/directory1/directory2/application2.asp
...
<form>
<input>
...
<iframe src="../../controls/FileUpload.asp"/>
...
</form>
...
www.website.com/controls/FileUpload.asp
...
<form method="post" enctype="multipart/form-data" action="FileUpload.asp"><!--problem here-->
<input type="file">
<input type="submit"/>
</form>
iframe src パスは正しく機能します (ディレクトリの奥深くにあるパスには、余分な二重ドットがあることに注意してください)。しかし、FileUpload.asp ページのコードでは、相対 URL が一貫して機能しません。form タグの action 属性にある URL は、別のページの iframe ではなく、ページをそのままロードするだけで機能します。これを「../controls/FileUpload.asp」に変更すると、最初のアプリケーション ページで動作しますが、2 番目のアプリケーション ページで動作させるには、別の「../」を追加する必要があります。
vbscript を使用して、特定のファイルへの絶対 URL を見つける方法があるのではないかと考えていました。これをハードコードできるインクルードファイルを使用していますが、可能であれば使用したくありません。他のアイデアはありますか?