2011-07-09 13 views

答えて

0
私は別々のビューとして追加したい

- あなたが呼び出すことができますそのように:あなたのさまざまなレイアウトの中から

@{Html.RenderAction("Head", "Header");} 

をし、同じ正しいヘッダデータを持っていますレンダリングされる。

HTH

0

は通常、マスターページでは、我々はContentPlaceHolderコントロールを入れ、このようなTitleContentそれを呼び出す:

<head> 
    <title> 
     <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> 
    </title> 
</head> 

と子供のページで:

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Some Title 
</asp:Content> 

に同じことをすることができますメタタグの場合は、HeadContentのContentPlaceHolderを作成し、各ページの(title/meta ...)を個別に記入してください。

+0

質問はMVCアプリケーションで、WebFormsアプリケーションではありません –

+1

はい、MVCです。私は本格的なMVCプロジェクトを持っており、その中で上記の構文を使用しています。 OPは彼が剃刀を使用しているとは特定しなかった。 –

+1

@alexanderb asp.net WebForms Viewエンジンはmvcで簡単に使用でき、GemmaがWebフォームビューエンジンを使用する場合は答えが良いです。私はあなたが何について不平を言っているのか理解していない – archil

5

タイトルにはViewBag、その他のヘッドコンテンツにはRenderSectionを使用します。これは、マスターレイアウトファイル(_Layout.cshtml)に行く:あなたの個々のビューで

<head> 
    <title>@ViewBag.Title</title> 
    @RenderSection("head", false); 
</head> 

、あなたが追加されます:

@{ 
    ViewBag.Title = "My Page Title"; 
} 

@section head { 
    <meta name="description" content="best site ever"> 
} 

EDIT:@section head {...}ブロックがオプションであることを

注意。このブロックを省略すると、コンパイルエラーは発生しません。メタデータを表示するビューで、それを指定します。

+0

これは、すべてのページにメタを指定する必要があることを意味します。 – iwayneo

+0

あなたのサイトのすべてのビューに同じメタデータを提供したい場合は、代替案を検討します。 RenderSectionを使用すると、カスタマイズしたメタデータを個々のビューで柔軟にサポートできます。 – jglouie

0

HTMLのHEADタグ内にメタタグを配置する必要があります。 MVCアプリケーションの場合、HEADがあるかどうかによって異なります。これは、レイアウト(Layout.cshtml)のページ(* .cshmtl)でもかまいません。メタ情報は残りのページを通して共有されるので、レイアウトに配置する方がはるかに優れています。

関連する問題