8

MasterPages を使用して Web サイトをナビゲートする場合、アプリケーションは現在のページを認識しますか? もしそうなら、それは私がアクセスできるオブジェクトに保存されますか?

私が尋ねている理由は、これを置き換えることができるからです:

//masterpage 
<div id="nav_main">
   <ul><asp:ContentPlaceHolder ID="navigation" runat="server">                    
   </asp:ContentPlaceHolder></ul>
</div>

//content page(s)
<asp:Content ContentPlaceHolderID="navigation" ID="theNav" runat="server">
   <li><a href="default.aspx">Home</a></li>
   <li id="current"><a href="faq.aspx">FAQ</a></li>
   <li><a href="videos.aspx">Videos</a></li>
   <li><a href="#">Button 4</a></li>
   <li><a href="#">Button 5</a></li>
</asp:Content>

リスト アイテムの ID を "current" に設定することでページへのリンクを強調表示する、ナビゲーションのためのより洗練されたソリューションを使用します。現在、各ページは、それぞれのリンクの ID を current に設定してナビゲーションを再作成します。

4

12 に答える 12

16

私はクリスに同意します。コントロールを使用してこのメ​​ニューの表示を処理し、どのリンクを強調表示する必要があるかを認識させます。私が常用している方法をご紹介します。同じリンクのスタイルを変える必要があるページが複数ある場合は、より複雑になる可能性がありますが、アイデアは理解できます。

Dim thisURL As String = Request.Url.Segments(Request.Url.Segments.Count - 1)
Select Cast thisUrl
   Case "MenuItem1.aspx"
       lnkMenu1.CssClass = "Current"
   Case "MenuItem2.aspx"
       lnkMenu2.CssClass = "Current"
End Select
于 2008-10-09T21:19:43.623 に答える
9

マスターページ内から現在のリクエストURLを取得するには、次のようにします。

string s = this.Page.Request.FilePath; // "/Default.aspx"

また、ナビゲーションをコンテンツページではなくマスターページに移動することをお勧めします。これにより、保守/アクセスが容易になります。

于 2008-10-09T20:55:26.683 に答える
0

Page プロパティにアクセスして、ページを取得できるはずです。いいえ:

string type = this.Page.GetType().Name.ToString();
于 2008-10-09T20:31:56.217 に答える
0

おそらく、マスター ページ内から要求パスの 1 つを使用して、現在の値を設定します。おそらく、マスター ページにプロパティをオーバーライドして、リンクなどのないページで適切な値に設定できるようにすることも考えられます。

于 2008-10-09T21:07:22.930 に答える
-1

マスターページではなく、ナビゲーションコントロールが、現在強調表示されているページを管理する必要があります。

ロードされたページは、それが誰であるかをナビゲーションアイテムに通知するか、ナビゲーションコントロール自体がそれを追跡する必要があります。

重要なのは、マスターページは単にコンテンツが表示されるホルダーであると想定されているということです。マスターページは何も制御することを想定されていません。

于 2008-10-09T20:56:38.617 に答える
-1

試す

this.Page.Master

現在のページのマスターページを取得します。

于 2013-04-17T13:44:48.997 に答える
-2

Request.RawURLもあります

于 2008-10-09T20:51:36.363 に答える