2012-12-14 2 views
1

C# 및 면도기에 ASP.NET MVC3 응용 프로그램이 있습니다.ASP.NET MVC3의 부분 뷰에서 Javascript로드

VS2010의 MVC3 애플리케이션 템플릿에서 표준 _Layout.cshtml을 사용합니다. View이 렌더링되고 _Layout에 직접 자바 스크립트가 첨부되지 않은 경우 자바 코드를 내 Partial View에 추가하고 싶습니다.

View은 다음과 같습니다

@model MyNameSpace.ViewModels.MyViewModel 

@{ 
    ViewBag.Title = "Home Page"; 
} 

<h2>@ViewBag.Message</h2> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Filters</legend> 

     @{ Html.RenderPartial("Filters", Model.Filters); } 

     <p> 
      <input type="submit" value="Submit" /> 
     </p> 

    </fieldset> 
} 

그리고 내 Partial ViewFilters.cshtml은 다음과 같습니다

@model MyNameSpace.ViewModels.FiltersViewModel 

<p> 
@Html.DropDownListFor(
    x => x.Type, 
    new SelectList(Model.Types, "Value", "Text"), 
    "-- select type --" 
) 
</p> 

<p> 
@Html.DropDownListFor(
    x => x.Category, 
    new SelectList(Model.Categories, "Value", "Text"), 
    "-- select category --" 
)</p> 

<script type="text/javascript"> 
    //Some Javascript 
</script> 

나는이 같은 View은 자바 스크립트가 <body> 내부 렌더링두고 보이는 경우 아주 못생긴. _Layout의 <head> 섹션에 Javascript를 직접 추가 할 수 있지만 원하는 것은 아닙니다. 내 목적을 달성하려면 어떻게해야합니까?

답변

5

메인 레이아웃 (masterpage) 내부 @RenderSection("HeadContent", required: false)를 추가하고 면도기는 HTML 페이지를 컴파일 할 때이 부분에서 @section 블록의 내용을 배치합니다

다음 부분보기에

@section HeadContent { 
     <link href="@Url.Content("~/Content/styles/admin.css")" rel="stylesheet" type="text/css" /> 
     <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>  
    } 

같은 것을 추가 레이아웃 (masterpage)에 @RenderSection ("HeadContent", required : false)을 배치 한 위치로 이동합니다. 부분 뷰에 @section 블록이 없으면 아무 것도 추가되지 않습니다.

관련 문제