web-dev-qa-db-ja.com

Page.ResolveUrlを使用する時期と理由

そのため、_./PageUrl.aspx_ではなくPage.ResolveUrl("~/PageUrl.aspx")を使用する理由と場所について、同僚と話し合いました。

たとえば、次のような違いはありますか?
<a href='<%= Page.ResolveUrl("~/Home.aspx")%>' runat="server"> Home </a>
そして
_<a href="./Home.aspx" runat="server"> Home </a>_?

ここ はmsdnで見つけたものですが、そこからわかる唯一の利点は、_Page.ResolveUrl_がコンテンツのURL(画像やそのようなもの)を解決するのに優れていることです

ここ _Page.ResolveUrl_を使用する理由の良い例を見つけることができますが、Babu Naresh Narraは_./_の使用法について何も述べていません。

_Page.ResolveUrl_が基本的な_./_アプローチよりも優れている点は他にありますか?

6
Zippy

さまざまなページで使用するユーザーコントロールを作成したとします。ユーザーコントロールの一部は、ホームページへのリンクです。

複数レベルの深さのあるページでユーザーコントロールを使用する場合: http://website/folder1/APageWithUserControlOn.aspx

次にこれ:

<a href="./Home.aspx" runat="server"> Home </a>

http://website/folder1/Home.aspx に解決されます

これはどこですか:

 <a href="<%= Page.ResolveUrl("~/Home.aspx")%>" runat="server">

http://website/home.aspx に解決されます。これは、どのページでもリンクが正しいため、希望どおりの可能性が高くなります。サーバーサイドのPage.Resolveは、「〜」を使用するときにルートからのURLを解決しました。最初の例では「/Home.aspx」を使用できるかもしれませんが、仮想ディレクトリを使用する場合、これは期待どおりに機能しません。

8
Si-N