2012-03-07 4 views
1

Я работаю над приложением ASP.NET MVC 3. В основном я использую фон ASP.NET WebForms. Я работаю над приложением со сложной схемой компоновки. Из-за этого я надеялся, что у меня будет весь код макета, ну, _Layout.cshtml. Моя задача состоит в том, что на каждой странице есть пользовательская логика javascript. Я обнаружил, что если этот JavaScript включен в середине моей страницы, это не сработает. Так что я хотел сделать, это переместить его в другое место. Но для этого мне нужно что-то похожее на элемент управления ASP.NET WebForms PlaceHolder. В идеале, я хотел бы быть в состоянии сделать что-то вроде этого:ASP.NET MVC 3 - Placeholder

<body> 
    <div id="myLayout" style="background-color:Gray; height:100%;"> 
    <div id="myContent" style="background-color:Silver;"> 
     @RenderBody()  
    </div> 
    <div id="myFooter" style="background-color:Silver;"> 
     Footer 
    </div> 
    </div> 

    @RenderScript() 
</body> 

Есть ли способ для меня, чтобы сделать это? Или мне придется писать каждую страницу по отдельности?

Спасибо!

ответ

7

Вот что я делаю, в каждом из ваших взглядов создать раздел, как это, поместить любой HTML вы хотите в нем

Любой Вид:

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

Затем обратно в _Layout.cshtml вы можете отобразить раздел в любом месте, второй параметр говорит, если страница требует раздела Scripts или нет.

_Layout.cshtml: (в любом месте вы хотите)

<head> 
    @RenderSection("Scripts", false) 
</head>