Asp.net-Mvc

MVC Razor @section 不理解腳本

  • March 21, 2022

我有:

  • 對比 2013
  • MVC 5.2.2
  • 剃刀 3.2.2

如果您還有其他需要知道的,請告訴我。

此問題僅發生在一個視圖頁面上。

我有一個所有 HTML 標記都正確關閉的視圖

這是你的標準觀點…

@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>
}

但…

線上上

@section Scripts

Resharper 報告:“無法解析部分腳本”

當我執行時,我得到了異常:

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...

沒有其他頁面有這個問題。

關於如何解決這個問題的任何想法?

異常消息說:

以下部分已定義但尚未為佈局頁面“~/Views/Shared/_LayoutInquiry.cshtml”呈現:“腳本”。

這表明您的_LayoutInquiry.cshtml頁面沒有為Scripts部分設置佔位符。您可以通過@RenderSection("Scripts", false)在適當的位置添加到您的佈局頁面來做到這一點,其中false表示視圖可以選擇提供此部分。

現在,當您的視圖呈現時,視圖中的內容@section Scripts { ... }將呈現到@RenderSection("Scripts", false)佈局頁面中呼叫的位置。

引用自:https://stackoverflow.com/questions/26168593