2014-10-02 3 views
5

ho:MVC Razor @section non capisce Scripts

  • VS 2013
  • MVC 5.2.2
  • Rasoio 3.2.2

Fammi sapere se c'è qualcos'altro devi sapere.

Questo problema si verifica solo su una pagina di visualizzazione.

ho una visione con tutti i tag HTML chiuso correttamente

E 'il tuo visualizzazione standard ...

@model MyNameSpace.Models.Inquiry 

@{ 
    var hasFormSetup = Model != null && Model.FormSetup != null && Model.FormSetup.Count > 0; 
    if (hasFormSetup) 
    { 
     ViewBag.Title = Model.FormSetup[0].InquiryValue; 
    } 
    Layout = "~/Views/Shared/_LayoutInquiry.cshtml"; 
} 

<style scoped> 
    ul { 
     list-style-type: none; 
    } 
</style> 

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="container" style="margin-top: 5px;"> 
     etc... 
    </div> 
    <div class="container" > 
     etc... 
    </div> 

} 


@section Scripts 
{ 

    <script type="text/javascript"> 

      $(document).ready(function() { 

    etc... 

      }); 


    </script> 
} 

ma ...

sulla linea

@section Scripts 

Rapporti Resharper: "Impossibile risolvere gli script di sezione"

Quando eseguo, ottengo l'eccezione:

Source: System.Web.WebPages 
Target: Void VerifyRenderedBodyOrSections() 
Type: HttpException 
Message: The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/_LayoutInquiry.cshtml": "Scripts". 
Stack:  at System.Web.WebPages.WebPageBase.VerifyRenderedBodyOrSections() 
    at System.Web.WebPages.WebPageBase.PopContext() 
    at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) 
    at System.Web.WebPages.WebPageBase.<>c__DisplayClass3.<RenderPageCore>b__2(TextWriter writer) 
    at System.Web.WebPages.HelperResult.WriteTo(TextWriter writer) 
    at System.Web.WebPages.WebPageBase.Write(HelperResult result) 
    at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body) 
    at System.Web.WebPages.WebPageBase.PopContext() 
    at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) 
    at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) 
    at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) 
    at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) 
    etc... 

Nessun altra pagina ha questo problema.

Qualche idea su come posso risolvere questo problema?

+3

La pagina '_LayoutInquiry.cshtml' ha una sezione' Script'? Si prega di aggiungere quel file alla tua domanda. Dovrebbe avere '@RenderSection (" Scripts ", false)' in una posizione appropriata al suo interno. (Il messaggio dice tutto: le seguenti sezioni sono state definite ma non sono state renderizzate per la pagina di layout "~/Views/Shared/_LayoutInquiry.cshtml": "Scripts".) –

+0

omg. Mi sento un tale doofus. Per favore aggiungi questo come risposta e ti darò i punti ... Sai cosa succede quando succede? L'intero corpo viene duplicato senza alcuna origine dati, quindi la pagina di errore predefinita viene visualizzata nella parte inferiore della pagina ... –

risposta

14

Il messaggio di eccezione dice:

Le seguenti sezioni sono stati definiti, ma non sono stati resi per il layout di pagina "~/Vista/Shared/_LayoutInquiry.cshtml": "Script".

Questo suggerisce che la pagina non si _LayoutInquiry.cshtml impostare un segnaposto per una sezione Scripts. È possibile farlo aggiungendo @RenderSection("Scripts", false) alla pagina di layout nella posizione appropriata, dove lo false indica che le viste possono facoltativamente fornire questa sezione.

Ora, quando la vista esegue il rendering, il contenuto di @section Scripts { ... } nella visualizzazione verrà visualizzato nella posizione della chiamata @RenderSection("Scripts", false) nella pagina di layout.