2011-09-09 10 views
2

私はASP.Net Webフォーム・プロジェクトをMVC3に変換しています。マスターページには、異なる場所に複数のコンテンツプレースホルダが含まれています。ベスト・アプローチ:MVCの複数のコンテンツ・プレース・ホールダー

最初のコンテンツプレースホルダを@RenderBody()に変更しましたが、私は2番目のコンテンツの処理方法と混同しています。

1つの方法として、ビューを分割して、コンテンツプレースホルダメソッドごとに@Html.RenderAction()を配置する方法があります。それを行うより良い方法はありますか?

答えて

5

Razorはasp.net webforms ContentPlaceHoldersの代わりにsectionsを理解しています。 this紹介リンクをご覧ください。

+0

おかげであれば何もしないようにMVCを伝えます。このリンクは、セクションのためのより良い読書かもしれません(http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx) 。将来の質問のためにこれをあなたの答えに含めてください... –

+0

申し訳ありません、私はそれを修正しました。それは私のコピーの貼り付けの誤植でした:) – archil

5

セクションを使用できます。例えば、layout.cshtmlのheadタグには、あなたが任意のビューの内部

<head>  
<title>@ViewBag.Title</title>  
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />  
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>  
@RenderSection("scripts", false); 
</head> 

をspecifiyすることができ、スクリプトのセクションを持っている、あなたは今、あなたのスクリプトを注入するためのスクリプトのセクションを追加することができます。

@section scripts{  
<script src="@Url.Content("~/Scripts/myscript.js")" type="text/javascript"></script> 
} 

「偽」paramが子ページに存在する場合のセクションをレンダリング、またはまったく呼び出しあなたの答えのための

+0

+1はRenderSectionをfalseにする必要があります。 – tugberk

+0

+1あなたは正解を出しましたが、私は答えとして@ archilの答えを選びました。彼は最初に答えたので... –

+0

@Niveded Butt:NP。問題はあなたの問題を解決したことです;) – Iridio

関連する問題