中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

ASP.NET2.0 サイト内絶対パスのサポートの不十分さ

ASP.NET2.0で1.xと大きく変わったのはご存じの通り。

個人的に一番大きな変更はマスタページだと思っていますが、これのサポートが甘いように思います。

link, scriptなどのファイル名を指定するタグがあります。

ルートにstyle.cssというファイルがある場合、ルートのファイルからはstyle.cssと見えていますが、一つ下のフォルダからは ../style.cssと見えることになります。

これらのサイト内絶対パスから相対パスに化かすために利用するのがSystem.Web.UI.Control.IUrlResolutionService.ResolveClientUrlであり、それの実装のSystem.Web.UI.Control.Control.ResolveClientUrlです。

しかしlinkやscriptはこれらを利用したものがありません。(>_<)

 <wankuma:WankumaStyleSheet ID="WankumaStyleSheet1" runat="server" SourceFile="~/style.css" />
 <wankuma:WankumaScript ID="WankumaScript5" runat="server" SourceFile="~/scripts/program.js" />

こんな感じで~/を指定できればいいですよね?

 <link rel="stylesheet" href="../style.css" type="text/css"></link>
 <script type="text/javascript" src="../scripts/program.js"></script>

こんな風になってくれます。

便利そうなので公開しようと思っていますが、一通り使うタグぐらい用意しておいてほしかった・・・

投稿日時 : 2006年6月24日 16:56

コメントを追加

# re: ASP.NET2.0 サイト内絶対パスのサポートの不十分さ 2006/06/25 12:36 bear.mini

VirtualPathUtility.ToAbsolute() を使えばお望みのことができると思います。

例:
<link rel="stylesheet" type="text/css" href='<% =VirtualPathUtility.ToAbsolute("~/style.css") %>' />

# re: ASP.NET2.0 サイト内絶対パスのサポートの不十分さ 2006/06/25 23:54 中博俊

なるほどVirtualPathUtilityは初めて知りましたが、linkタグに対してどう利用しますか?
<link rel="stylesheet" href="<%=VirtualPathUtility.ToAbsolute("~/style.css")%>" type="text/css">

ってやりますか?

# re: ASP.NET2.0 サイト内絶対パスのサポートの不十分さ 2006/06/26 11:05 bear.mini

私の書いた例がずばり link タグを使ったもののつもりでしたが・・・
href='~' とシングルクオーテーションで囲むのがポイントです。
(VirtualPathUtility.ToAbsolute() の中でダブルクオーテーションを使用するので)

ただ、VirtualPathUtility を使っても多少面倒というか、このくらいもっとネイティブにサポートしてくれてもいいのにな、というのは同感ですが、わざわざタグを作るよりはマシかなと思いました。
.NET 2.0 でサポートされたようなので 1.x な環境ではタグを作るしかないのかもしれませんが、1.x には MasterPage がないので問題ないのかな?

# re: ASP.NET2.0 サイト内絶対パスのサポートの不十分さ 2006/06/26 14:32 中博俊

みえてなかった・・・orz
<%=%>っていやなんですよねー

ただこの方法も悪くは無いですね。(^^

1.xでも同様の問題は有ったというか、ASP時代からあったのですが、いろいろ工夫して絶対パス指定になるように設定しています。

# RkMfsjVUKSSaMKQ 2017/05/22 2:36 JimmiXzSq

FTyoBa http://www.LnAJ7K8QSpkiStk3sLL0hQP6MO2wQ8gO.com

タイトル
名前
URL
コメント