2016-12-17 5 views
0

私はASP.NET MVCアプリケーションを持っています。私のアプリでは、私は複数のレイアウトファイル(〜10)があります。私は、レイアウトファイルを横切って同様のHTMLブロックを持っています。そのために、私は再利用可能なコントロールに入れたいと思っています。なぜなら、私はそれにいくつかの変更が必要になると思うからです。ASP.NET MVC - コンテンツで再利用可能なコントロール

このコントロールを使用するレイアウトファイルを参照するページの中には、コントロールのコンテンツ領域に何かを挿入したいものがあります。

_Layout.cshtml

@** MY REUSED BANNER CONTROL GOES HERE **@ 

<div class="container"> 
    @RenderBody() 
</div> 

Banner.file [何を使用してくださいません]

<div class="container-fluid"> 
    <div class="row"> 
    <div class="col-lg-3"> 
     Hello 
    </div> 

    <div class="col-lg-3"> 
     @RenderSection("bannerContent", required: false)  
    </div> 

    <div class="col-lg-3"> 
     Leave 
    </div> 
    </div> 
</div> 

マイページ:実証するために、私はこのようなレイアウトファイルを持っている想像してみてください。 cshtml

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml" 
} 

<div> 
    Main content goes here 
</div> 

@section bannerContent { 
    <div>This goes into Banner.file</div> 
} 

上記のコードは機能しません。アイデアを伝えるのはそこにある。パーシャルはセクションをサポートしていないので、私の理解から、パーシャルビューは機能しません。私の選択肢は何ですか?

+0

ビューパーシャルにデータを渡す必要がある場合は、モデルを介して渡します。 – mason

+0

@mason - データを渡す以上のことをしようとしています。バナー内の特定の画面に対してカスタマイズされた表示をしたいのです。私は単純な例を提供しました。しかし、私は実際にはもっと様式化された何かをしたいと思っています。 – user687554

答えて

0

私はあなたにこのようなものが必要であると分かっています。

  • 〜/ Views/Sharedに_banner.cshtmlを作成します。

    <div class="container-fluid"> 
    <div class="row"> 
        <div class="col-lg-3"> 
         Hello 
        </div> 
    
        <div class="col-lg-3" id="banner_content"> // Here your page specific content will go 
    
        </div> 
    
        <div class="col-lg-3"> 
         Leave 
        </div> 
    </div> 
    

  • _LayOut.cshtml

    @Html.Partial("_banner"); // Reusable banner html 
        <div class="container"> 
         @RenderBody() 
        </div> 
    
  • MyPage.cshtml

    @{ 
        Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 
    
    <div> 
        Main content goes here 
    </div> 
    
    @section Scripts { 
        $(document).ready(function(){ 
         $('#banner_conten').html('Your dynamic part.'); 
        }); 
    } 
    

    私は、私は完全に、またはないあなたの条件を理解しているかどうかわかりません。しかし、それがあなたを助けるかどうか確認してください。

+0

ありがとうございます。私はJavaScriptでそれをやることができることを知っています。しかし、私は本当にそれをサーバー側で行うことができるようにしたいと思います。 – user687554

+0

_banner.cshtmlにモデルバインディングを使用しますか? – Anadi

関連する問題