2013-07-26 17 views
19

タイトルには、部分ビューでセクションを定義したいと考えています。ASP MVCパーシャルビューでセクションを定義する

コントローラー:

public ActionResult Test() 
{ 
    return View(); 
} 

public ActionResult PartialTest() 
{ 
    return PartialView("_PartialTest"); 
} 

Test.cshtml:

@{ 
    ViewBag.Title = "Test"; 
} 

<h2>Test</h2> 

@Html.Action("PartialTest") 

_PartialTest.cshtmlを次のように私がテストしてみた

私のコードがある

<p>partial Test</p> 

@section scripts { 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      alert("Test"); 
     }); 
    </script> 
} 

セクション012を配置するTest.cshtmlのは正常に動作し、問題はレイアウトに含まれていません。

誰でもこの方法を知っていますか?

+0

ありがとう、私が探していたものでした:) –

+0

これは私のためのトリックをしたようです:http://stackoverflow.com/questions/7556400/injecting-content-into-specific-sections-from-a -partial-view-asp-net-mvc-3-with#15971504 – Schalk

答えて

33

部分ビューは@sectionタグをサポートしていません。部分ビューを参照するビューにそれらを追加する必要があります。詳細については、この質問を参照してください:Injecting content into specific sections from a partial view ASP.NET MVC 3 with Razor View Engine

基本的には、部分的なビューを参照するメインビューは、部分的なビュー自体ではなく、JavaScriptを含む責任があるということになります。

+19

これは質問の答えです(サポートされていない)。一部のアプリケーションでは、「ウィジェット」を作成する機能と、「ウィジェット」を作成する他の方法は、部分的なビューを使用するよりも好きですか?それは非常に限られており、親の視点に大きく依存しているという事実を除いて、目的を完全に破っています。 MVCのカミソリにユーザーコントロール(Webフォーム)と同等のものがありますか? – Keith

+0

これは古い質問ですが、これを正確に解決しようとしています:レンダリングされるビューに 'ウィジェット'の特定のスクリプト/ jqueryを含めることを望んでいますか?誰でも良い解決策を得ましたか? –

+0

あなたはどのモジュールからでも呼び出せるようなスクリプトマネージャー/エクステンションを書いて、あなたの親/マスタービューに一意の/別個のスクリプトタグのセットをプリントアウトする方法があります。 –

5

私はこの質問には、スーパー時代遅れですけど、(私があったように)まだ不思議かもしれないそこに誰のために:

あなたが実際にあなたの部分図で@section scripts { }部分を変更することにより、この問題を回避することができますこれは:

@using (Html.BeginScriptContext()) 
{ 
    Html.AddScriptBlock(
     @<script type="text/javascript"> 
     //rest of script 
    ); 
} 

これは、あなたの部分図でスクリプトを持っており、そのウィジェットのような構造を実現することができます。お役に立てれば!

+0

これは、サードパーティのパッケージForLoop.HtmlHelpers(https://www.nuget.org/packages/Forloop.HtmlHelpers/)によって提供される機能を指していると思います。 –

関連する問題