3

私はこれを持っています_Layout.cshtml

<body>
    <div id="wrapper">
<div id="header-wrapper">
    <div id="header">
        <div id="logo">
                //SOME LOGO LOGIC

        </div>
    </div>
    <div id="menu-wrapper">

        //SOME MENU LOGIC

    </div>
    <!-- end #menu -->
    <div id="banner">
        <div id="slider"> <a href="#" class="button previous-button">&lt;</a> <a href="#" class="button next-button">&gt;</a>
            <div class="viewer">
                <div class="reel">
                    <div class="slide">
                        <h2>Stallen..</h2>
                        <p>Her kan du skrive noe tekst</p>
                        <a class="link" href="~/horse/riversidestar">Full story ...</a><img src="~/images/img01.jpg" width="900" height="350" alt="" /></div>
                    <div class="slide">
                        <h2>Riverside Star i naturen</h2>
                        <p>Her kan du skrive noe tekst</p>
                        <a class="link" href="~/horse/riversidestar">Full story ...</a><img src="~/images/img02.jpg" width="900" height="350" alt="" /></div>
                </div>
            </div>
            <div class="indicator">
                <ul>
                    <li class="active">1</li>
                    <li>2</li>
                </ul>
            </div>
        </div>
        <script type="text/javascript">//SOME SCRIPT</script>

    </div>
</div>

<div id="page">
    <div id="content">
         @RenderBody()

    </div>

    <div id="sidebar-bg">
        <div id="sidebar">
            <h2>Nyheter</h2>
            @{Html.RenderAction("ShortNewsList", "News");}
        </div>
    </div>

    <div style="clear: both;">&nbsp;</div>
</div>

現在、ビューごとに異なる唯一のrenderBody部分です。別のビューに移動したときに、id=bannerを使用してDIVのコンテンツを変更するにはどうすればよいですか。

別のビューに追加しようとすると、当然、レイアウトが非常に間違っています。

4

1 に答える 1

8

Razorセクションを使用できます。レイアウトでセクションを定義します。

@RenderSection("Banner", required: false)

そしてあなたの見解ではこのセクションを上書きします:

@section Banner {
    ... contents of the banner specific to that view
}

各ビューでオーバーライドする必要がないように、デフォルトのバナーを定義することもできます。

@if (!IsSectionDefined("Banner"))
{
    ... put the default banner contents here
}
else
{
    @RenderSection("Banner", required: true)
}
于 2012-06-13T06:43:26.107 に答える