2

次のビューを持つASP.NETMVC2Webアプリケーションがある場合:

  1. Main.aspx
  2. Page1.aspx
  3. Page2.aspx

そして、すべてのビューはSite.masterと呼ばれるMasterViewから継承します。

ページのデフォルトのTitle/H1を設定できるようにしたいのですが、これは派生ビューでオーバーライドできます。

たとえば、Main.aspxには「MySite-xxx」、Page1.aspxには「MySite-Page 1」、Page2.aspxには「MySite-Page2」があります。

また、新しい派生ビューでTitle / H1を設定しないことを選択した場合、マスターTitle/H1が表示されます。

WebFormsを使用すると、次の方法でこれを実現できます。

  1. マスターrunat="server"でTitle/H1タグを作成します
  2. マスターコードビハインドで保護されたプロパティを公開する
  3. 派生ページのコードビハインドのPage_Loadで、プロパティ( Master.Title = "Page 1")を設定します。
  4. マスターコードビハインドのPage_PreRenderで、Title/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」しか指定できないようにしたかったので、タイトルが魔法のように「MySite-ページ1」に変更されました。わかる?タイトルの「MySite-」部分は、タイトルのテンプレートである必要があります。

私はおそらくここで明白な何かを見逃しています。:)

4

3 に答える 3

2

クイック検索で私はこれを見つけました:

http://haacked.com/archive/2009/04/03/tipjar-title-tags-and-master-pages.aspx

理由を説明します

<title>MySite<asp:content..../></title>

動作しません

于 2010-11-05T00:30:50.507 に答える
2

これは私が通常それをする方法です:

<title>MySite - <%: Page.Title ?? "Default title" %></title>

MasterPageで。

Title次に、次のようにコンテンツページでプロパティを定義できます。

<%@ Page Language="C#"
         MasterPageFile="~/Views/Shared/Site.Master"
         Inherits="System.Web.Mvc.ViewPage"
         Title="Page 1"
%>

編集:

さて、あなたはこのSOの質問を見たいかもしれません:ASP.NET MVC-マスターページで表示、タイトルを設定する方法は?

于 2010-11-05T00:41:36.887 に答える
0

あなたがそれを説明しているので、はるかに簡単です。

マスターページにコンテンツプレースホルダーを追加するだけです

<title>
    My Site - <asp:ContentPlaceHolder ID="PageTitle" runat="server" />
</title>

次に、コンテンツページでそれを次のように使用します

<asp:Content ID="Content3" ContentPlaceHolderID="PageTitle" runat="server">
    My Page
</asp:Content>

この方法は機能しますが、サーバーコントロールではなく、HTMLHEADタグを使用する必要があります。だから、単にrunat="server"あなたの頭から削除します。

于 2010-11-05T00:24:47.130 に答える