質問

ASP.NET MVC 2 Webアプリケーションがある場合は、次のビューを使用しています。

  1. main.aspx
  2. Page1.aspx
  3. Page2.aspx

そして、すべてのビューは、呼ばれるマスタービューから継承されます site.master,

持っていることができるようになりたい デフォルト ページのタイトル/H1。これは、派生ビューでオーバーライデンする可能性があります。

例:main.aspxには「mysite -xxx」、page1.aspxには「mysite -1」、page2.aspxは「mysite -page2」を持っています。

そして、私が選択した場合 設定しないでください タイトル/H1新しい派生ビューでは、マスタータイトル/H1が表示されます。

WebFormsを使用すると、次の方法でこれを達成します。

  1. マスターにタイトル/H1タグを作成します runat = "server"
  2. 保護されたプロパティを公開します マスターコードビハインドで
  3. の上 page_load 派生ページのcode-behindの場合、プロパティを設定します(master.title = "Page 1").
  4. の上 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" あなたの頭から。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top