私はもともと、Windows 2000 サーバー上の .Net 1.1 Framework に展開された ASP.NET アプリケーションを持っており、現在は 2.0.50727 を使用して Windows 2008 サーバー上で使用しています。チルダ (~) を使用して、アプリケーションの多くの領域で絶対パスを解決します。これは、asp:hyperlink コントロール (run-at サーバー タグを使用) などに対して機能しますが、HyperLinkColumns を使用して作成するバインドされたデータグリッド コントロールに対しては機能します。データベースから返された ID 値に基づいてリンクを作成すると、チルダがページに書き込まれます。
このコード:
HyperLinkColumn oLink = new HyperLinkColumn();
oLink.DataNavigateUrlField = "IdField";
oLink.DataNavigateUrlFormatString = "~/Here{0}.aspx";
これをページにダンプしています:
<a href="~/Here171201.aspx">
IIS または .NET Framework のバージョン間で何が変更され、この機能が動作しなくなった可能性がありますか? Tilde は 1.1 で確実に解決されました。組織内の多数の 1.1 フレームワーク サーバーにまったく同じコードを展開しています。残念ながら、DataNavigateUrlFormatString を設定するクラスは Page にアクセスできないため、Page.ResolveUrl の回避策を挿入するためにいくつかの手間をかける必要があります...