Asp.net mvc 4 以下章节已定义,但尚未呈现在布局页面中~/Views/MasterPages/Default.cshtml";:&引用;标题「;

Asp.net mvc 4 以下章节已定义,但尚未呈现在布局页面中~/Views/MasterPages/Default.cshtml";:&引用;标题「;,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我得到了渲染部分的错误,下面是错误的堆栈跟踪。 我在“Default.cshtml”页面中进行了交叉检查,发现呈现部分是可选的,但我仍然收到了这个错误 Default.cshtml: <title>@RenderSection("Title",required: false)</title> @RenderSection(“Title”,必填项:false) 堆栈跟踪: System.Web.WebPages.WebPageBase : VerifyRende

我得到了渲染部分的错误,下面是错误的堆栈跟踪。 我在“Default.cshtml”页面中进行了交叉检查,发现呈现部分是可选的,但我仍然收到了这个错误

Default.cshtml:

<title>@RenderSection("Title",required: false)</title>
@RenderSection(“Title”,必填项:false)
堆栈跟踪:

    System.Web.WebPages.WebPageBase : VerifyRenderedBodyOrSections The following sections have been defined but have not been rendered for the layout page "~/Views/MasterPages/Default.cshtml": "Title".    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__DisplayClass7.<RenderPageCore>b__6(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)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
       at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.<BeginInvokeAction>b__20()
       at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult)
       at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
       at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
       at System.Web.Mvc.Controller.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult)
       at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar)
       at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
       at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
       at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar)
       at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
       at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
       at System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)
       at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult)
       at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar)
       at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
       at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
       at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
       at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()

   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
System.Web.WebPages.WebPageBase:VerifyRenderedBodyOrSections已为布局页面“~/Views/MasterPages/Default.cshtml”定义了以下部分,但尚未呈现这些部分:“Title”。在System.Web.WebPages.WebPageBase.VerifyRenderedBodyOrSections()中
在System.Web.WebPages.WebPageBase.PopContext()中
位于System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriter writer、WebPageRenderingBase起始页)
在System.Web.WebPages.WebPageBase.c__DisplayClass7.b__6(文本编写器)中
位于System.Web.WebPages.HelperResult.WriteTo(文本编写器)
在System.Web.WebPages.WebPageBase.Write(HelperResult结果)中
位于System.Web.WebPages.WebPageBase.RendersUrounding(字符串partialViewName,操作`1 body)
在System.Web.WebPages.WebPageBase.PopContext()中
位于System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriter writer、WebPageRenderingBase起始页)
位于System.Web.Mvc.RazorView.RenderView(ViewContext-ViewContext、TextWriter-writer、对象实例)
位于System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext、ViewContext、TextWriter)
在System.Web.Mvc.ViewResultBase.ExecuteSult(ControllerContext上下文)中
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext ControllerContext,ActionResult ActionResult)
在System.Web.Mvc.ControllerActionInvoker.c_uuDisplayClass1A.b_uuu17()中
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter筛选器、ResultExecutingContext预文本、Func`1 continuation)
在System.Web.Mvc.ControllerActionInvoker.c_uuDisplayClass1A.c_uuDisplayClass1C.b_uu19()中
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext ControllerContext,IList`1 filters,ActionResult ActionResult)
在System.Web.Mvc.Async.AsyncControllerActionInvoker.c_uuDisplayClass25.c_uuDisplayClass2A.b_u20()中
在System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass25.b__22(IAsyncResult asyncResult)
位于System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResult`1.End()
位于System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
在System.Web.Mvc.Controller.c__;u displayClassId.b__u18(IAsyncResult asyncResult)
在System.Web.Mvc.Async.AsyncResultRapper.c__DisplayClass4.b__3(IAsyncResult ar)中
位于System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResult`1.End()
位于System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
在System.Web.Mvc.Async.AsyncResultRapper.c__DisplayClass4.b__3(IAsyncResult ar)中
位于System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResult`1.End()
在System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)上
位于System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)
在System.Web.Mvc.MvcHandler.c_uuu显示class8.b_uuu3(IAsyncResult asyncResult)
在System.Web.Mvc.Async.AsyncResultRapper.c__DisplayClass4.b__3(IAsyncResult ar)中
位于System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResult`1.End()
位于System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
在System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.EndProcessRequest中(IAsyncResult结果)
在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()中
在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)

请告诉我哪里做错了。谢谢。

该错误具体是由定义该节的视图引起的,即:

@section Title { ... }
但是,该部分从未使用过。这只能意味着这个特定的视图没有利用您的
Default.cshtml
布局,因为它实现了这个部分。你需要弄清楚为什么它没有利用你认为应该的布局。以下是一些需要注意的事项:

  • 除非您在视图中专门设置了布局,否则它使用的布局将由最近的
    \u ViewStart.cshtml
    文件确定。Razor将首先在与所讨论的视图相同的文件夹中查找,然后从那里向上遍历
    视图
    目录树。检查该树中的任何和所有
    \u ViewStart.cshtml
    文件

  • 如果使用布局继承,则必须记住在每个布局中重新定义节。例如,如果要执行以下操作:

    Default.cshtml

    @RenderSection("Title", required: false)
    
    @{ Layout = "~/Views/Shared/Default.cshtml"; }
    
    @{ Layout = "~/Views/Shared/SubLayout.cshtml"; }
    @section Title { ... }
    
    SubLayout.cshtml

    @RenderSection("Title", required: false)
    
    @{ Layout = "~/Views/Shared/Default.cshtml"; }
    
    @{ Layout = "~/Views/Shared/SubLayout.cshtml"; }
    @section Title { ... }
    
    View.cshtml

    @RenderSection("Title", required: false)
    
    @{ Layout = "~/Views/Shared/Default.cshtml"; }
    
    @{ Layout = "~/Views/Shared/SubLayout.cshtml"; }
    @section Title { ... }
    
    由于
    SubLayout.cshtml
    未实现该部分,您将收到此错误。要重新定义它,只需将以下内容添加到
    SubLayout.cshtml

    @section Title
    {
        RenderSection("Title", required: false)
    }
    

  • 我没有使用_viewStart.cshtml并在每个页面和部分标题上添加布局。但我发现了一个局部视图,其中章节标题被称为局部视图,我不使用布局。因此,请建议我,这可能会导致问题,并产生这个问题。