【问题标题】:am getting error "following sections have been defined but have not been rendered"我收到错误“以下部分已定义但尚未呈现”
【发布时间】:2015-05-13 10:42:25
【问题描述】:

我正在克服错误 “以下部分已定义但尚未呈现”

每当我尝试通过 razor 调用语法添加样式时。

@section Styles {
   @Styles.Render("~/Content/plugins/iCheck/iCheckStyles")
}

我是 MVC5 Razor 的新手,有谁能帮忙吗?

【问题讨论】:

  • 你的布局是否包含@RenderSection("styles", false)
  • 完全没有,我应该添加它吗?
  • 是的。它充当定义视图 @section styles { 的内容的占位符 - 通常,对于样式,您会将其放置在布局的 <head> 标记中
  • 这个函数会做什么?你能解释一下吗?所以我下次可以正常使用它。谢谢@StephenMuecke
  • 如果你指定false作为第二个参数,这意味着使用布局的视图不需要定义@section styles { ..(它是可选的)。否则需要使用@if (IsSectionDefined("styles ")) { @section styles {来检查视图是否有section(否则如果视图没有@section styles { ..会抛出异常)

标签: razor asp.net-mvc-5


【解决方案1】:

为了使用@section Styles,视图使用的布局必须包含

@RenderSection("styles", false)

@RenderSection 在布局中充当占位符,以呈现在该部分中定义的任何内容。在您的情况下,意味着 iCheckStyles 包中定义的 css 文件将在声明 @RenderSection 的视图中呈现。对于 css 文件,这通常位于 <head> 标记中,紧接在 @Scripts.Render("~/bundles/modernizr") 之前

注意第二个参数定义视图是否需要@section Styles { ... }。如果值为false,则@section Styles 是可选的,否则视图必须包含@section Styles,否则将引发异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多