尚未为布局页面“〜/ Views / Shared / index.cshtml”调用“RenderBody”方法

时间:2016-09-03 16:09:41

标签: .net asp.net-mvc-5

没有为布局页面“〜/ Views / Shared / index.cshtml”调用“RenderBody”方法

在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

如何解决此错误

6 个答案:

答案 0 :(得分:9)

在我添加

后的情况
<div class="container body-content">
    @RenderBody()
    <hr />
    <footer><p>&copy; @DateTime.Now.Year - My ASP.NET Application</p>
    </footer>
</div>

到共享布局的页脚,一切都很完美。这是因为

上的布局页面
  

查看 - &gt;共享

尚未加载方法@RenderBody(),因此您可以使用较高的代码片段来解决此问题,或者您只需在相关的cshtml页面顶部注释布局。

有趣的编码 欢呼声...

答案 1 :(得分:1)

请将此代码放在页面末尾的“body”关闭标记之前

@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)

答案 2 :(得分:0)

尚未为布局页面调用“RenderBody”方法

这通常发生在您: - 享有部分景致 - 使用_ViewStart.cshtml页面 - 使用以下命令从控制器调用partival视图:return View();

你出错了。这是局部视图,所以你应该这样返回:

返回PartialView();

来源:http://www.cloud-developer.eu/blog/2014/01/20/renderbody-method-called-layout-page/

答案 3 :(得分:0)

我遇到了同样的问题,我的情况是我使用了嵌套布局,你需要为所有_layout包含@RenderBody

请在此处阅读详细信息:https://forums.asp.net/t/2098873.aspx?The+RenderBody+method+has+not+been+called+for+layout+page+Views+Shared+_Layout+cshtml+

答案 4 :(得分:0)

当我在asp.net核心MVC项目中使用TagHelperComponent时遇到相同的错误。我在Google上搜索了很多,但是每个人都遇到了与我不同的问题,并且显然有与我不同的解决方案,例如多个布局文件等。让我解释一下我的问题-

我正在制作一个CopyRight TagHelperComponent,用于将我的版权内容(在主体关闭标签之前)注入到我的应用程序的每个视图中,如下所示-

public class CopyRightTagHelperComponent:TagHelperComponent
{
    public CopyRightTagHelperComponent(string copyrightContent)
    {
        CopyrightContent = copyrightContent;
    }

    public string CopyrightContent { get; set; }

    public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
    {
        if (context.TagName.Equals("body", StringComparison.OrdinalIgnoreCase))
        {
            output.Content.AppendHtml(CopyrightContent);
        }

        return Task.CompletedTask;
    }
}

但是我相信您可以在我上面的代码中很好地找到问题。问题是,我试图错误地将我的版权内容注入到body标签中(不是在body关闭标签之前,而是具有Content属性)。花了很多时间后,我发现我使用“ Content”属性来附加内容而不是PreContent或PostContent属性,这就是我的错误。

仅由于错误原因,我试图用“ Content”属性附加内容。将我下面的代码从“内容”更改为“ PostContent”,已修复错误-

if (context.TagName.Equals("body", StringComparison.OrdinalIgnoreCase))
{
   output.PostContent.AppendHtml(CopyrightContent);
}

重要节点:默认情况下,Tag Helper组件仅对头部和身体元素起作用。

https://github.com/aspnet/Mvc/tree/65af12f1f575fdaee893e0232416df29bb83d7fa/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers

要使它们适用于Footer等其他元素,我们需要创建一个新的Tag Helper(在footer元素中命名为FooterTagHelper),它将从特殊类“ TagHelperComponentTagHelper”派生。作为参考,请参见下面的Microsoft代码-

https://github.com/aspnet/Mvc/blob/65af12f1f575fdaee893e0232416df29bb83d7fa/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/BodyTagHelper.cs

谢谢

答案 5 :(得分:0)

最后,我找到了答案,我遇到了同样的问题,并且要非常轻松地解决它,请转到您的视图文件夹create _viewSrart.cshtml-然后转到您在views文件夹中拥有的每个视图并删除或评论这(布局=“〜/ Views / Home / Index.cshtml”;)将起作用。以后谢谢我