ASP.NET MVC-動的なH1/タイトルスキームを設計する方法は?
-
29-09-2019 - |
質問
ASP.NET MVC 2 Webアプリケーションがある場合は、次のビューを使用しています。
- main.aspx
- Page1.aspx
- Page2.aspx
そして、すべてのビューは、呼ばれるマスタービューから継承されます site.master,
持っていることができるようになりたい デフォルト ページのタイトル/H1。これは、派生ビューでオーバーライデンする可能性があります。
例:main.aspxには「mysite -xxx」、page1.aspxには「mysite -1」、page2.aspxは「mysite -page2」を持っています。
そして、私が選択した場合 設定しないでください タイトル/H1新しい派生ビューでは、マスタータイトル/H1が表示されます。
WebFormsを使用すると、次の方法でこれを達成します。
- マスターにタイトル/H1タグを作成します runat = "server"
- 保護されたプロパティを公開します マスターコードビハインドで
- の上 page_load 派生ページのcode-behindの場合、プロパティを設定します(master.title = "Page 1").
- の上 page_prerender Master Code-Behindの、タイトル/H1タグをに設定します 「私のサイト - 」 +タイトル。
ASP.NET MVCでこれを達成するにはどうすればよいですか?
マスターでこれを行うことができました:
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
そして、それをビューに設定します:
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
MySite - Page 1
</asp:Content>
しかし、私はビューで「1ページ1」のみを指定できるようにしたかったので、タイトルは魔法のように「MySite -1」に変更されました。わかる?タイトルの「mysite-」の一部は、タイトルのテンプレートである必要があります。
私はおそらくここで明らかな何かを見逃しているでしょう。 :)
解決
簡単な検索で私はこれを見つけました:
http://haacked.com/archive/2009/04/03/tipjar-tags-and-master-pages.aspx
理由を説明します
<title>MySite<asp:content..../></title>
うまくいきません
他のヒント
これが私が通常それをする方法です:
<title>MySite - <%: Page.Title ?? "Default title" %></title>
あなたの傑作で。
次に、を定義できます Title
このようなコンテンツページのプロパティ:
<%@ Page Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage"
Title="Page 1"
%>
編集:
まあ、あなたはこれを見たいかもしれませんので、質問: ASP.NET MVC-マスターページで表示、タイトルを設定する方法は?.
あなたがそれを説明しているので、はるかに簡単です。
マスターページにコンテンツプレースホルダーを追加するだけです
<title>
My Site - <asp:ContentPlaceHolder ID="PageTitle" runat="server" />
</title>
その後、コンテンツページで使用します
<asp:Content ID="Content3" ContentPlaceHolderID="PageTitle" runat="server">
My Page
</asp:Content>
この方法は機能しますが、サーバーコントロールではなく、HTMLヘッドタグを使用する必要があります。したがって、単に削除します runat="server"
あなたの頭から。