2009-03-23 9 views
4

MVCを使用して、コンテンツプレースホルダを持つマスターページにタイトルを追加しています。asp.net masterpageのデフォルトタイトルに追加する

<head runat="server"> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server"/></title> 
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
</head> 

私はコンテンツホルダーの前にデフォルト設定のテキストを追加しようとすると、それは最終的にレンダリングされたページ内のテキストを表示しません:デフォルトのMVCのマスターページのテンプレートには、次のコードを使用しています。私は追加されたcontentplaceholderテキストでデフォルトのタイトルを表示するページを取得しようとしています。

例:
(デフォルトのテキスト)(のContentPlaceHolderテキスト)
マイページ - 私は背後にあるコードを使用することなく、これを達成する方法を探しています

<head runat="server"> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>My Page - <asp:ContentPlaceHolder ID="TitleContent" runat="server"/></title> 
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
</head> 

お問い合わせ。何か案は?

+0

あなたはheadタグからにrunat =「server」を奪うとどうなりますか個人的には、コントローラのアクション内でViewData ["PageTitle"]のようなものに設定します。 – Charlino

+0

私は可能な解決策を見つけるためにテストしていましたが、runat = "server"タグが存在するかどうかに関わらず同じように動作するように見えました。 – Aaron

答えて

7

さらに見ると、Phil Haackは実際に私の質問の解決策であった記事を投稿しました。それはHaackedで見つけることができます。

要約すると、頭の中でレンダリングされるものはすべてコントロールとしてレンダリングされています。上の質問の解決方法は、テキストを正しく生成するためにタイトルにaspリテラルコントロールを置くことです。

<%@ Master ... %> 
<html> 
<head runat="server"> 
    <title> 
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> 
    <asp:LiteralControl runat="server" Text=" - MySite" /> 
    </title> 
</head> 
... 
+0

Alexanderが述べたように、Unknown Server Tag例外が発生します。 –

+0

これは私のために働く。 –

+4

"LiteralControl"の代わりに "Literal"を使用してみてください – rudib

1

MVCを使用していて、コントローラのあるオブジェクトのタイトルをページに渡している場合は、これを表示するためにインラインコードを使用します。

<head> 
<title>My Page - <%= ViewData.Get<Model.Page>().Title %></title> 
</head> 

ノートのポイントとして、我々は我々が持っているすべてのビューからファイルの背後にあるすべてのコードを削除した:

私たちは、このようにマスターページに表示データから直接入力されたデータを取得するためのMVCのcontrib関数を使用しますビューを見やすくするために、各ビューのコードの背後にあるよりもはるかに優れています。

+0

それは問題を処理するだろうが、私はマスターページ上にのみテキスト "マイページ"を持つことができる解決策を見つけようとしている。そのようにしてタイトルが変更された場合、各ビューで変更する必要はありません。どうもありがとうございました。 – Aaron

9

そうでない場合は、我々が "不明なサーバータグ" エラーが発生しますので、我々は、

<asp:Literal runat="server" Text=" - MySite" /> 

代わりの

<asp:LiteralControl runat="server" Text=" - MySite" /> 
資料に記載

を使用する必要がありそうです。

4

なぜですか?

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

も同様です。面倒なくに?

+0

簡単で、魅力的な作品です... – RRTW

2
私はこれを使用することを好む

<title>Site Name - <%=Page.Title%></title> 

リテラルコントロールを使用するよりもはるかにきれい

...

関連する問題