【问题标题】:How to override the @section in MVC Razor如何覆盖 MVC Razor 中的 @section
【发布时间】:2018-01-24 10:24:53
【问题描述】:

请帮我解决这个问题。我有两个文件 BaseLayout.cshtml,第二个是 ExtendedLayout.cshtml 文件,用于覆盖 HTML CSS 的基本内容。 如果覆盖中存在相同的部分,我需要运行extendedLayout.cshtml 文件的扩展部分,否则base 将起作用。与 OOPS 覆盖概念相同。

基本布局 CSS 代码

@section HeadCssSection {
   @*Base Layout CSS *@
   @Styles.Render("~/Content/BaseCSS")
   @RenderSection("HeadCssSection")

}

扩展布局 CSS 代码

@section HeadCssSection {
    @Styles.Render("~/Content/ExtendedCSS")
    @RenderSection("HeadCssSection") 
}

请帮我解决这个问题

【问题讨论】:

  • 能否请您详细说明“如果存在相同部分,我需要运行extendedLayout.cshtml 文件的扩展部分”
  • 这是我需要做的 如果 CSS 代码在基础和扩展中可用,则应运行扩展代码 如果 CSS 代码在基础中可用而不在扩展中,则应运行基本代码
  • @Umashankar 你解决问题了吗?
  • 我已经解决了这个问题
  • 你是怎么解决的?

标签: html css asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

你可以像下面这样使用isSectionDefined()

@if (!IsSectionDefined("HeadCssSection")) { 
    RenderSection("HeadCssSection") 
}

【讨论】:

    【解决方案2】:

    在基本布局中,这样写代码。

    @section HeadCssSection {
       @if (IsSectionDefined("HeadCssSection"))
       {
           @RenderSection("HeadCssSection")
       }
       else
       {
           @Styles.Render("~/Content/BaseCSS")
       }
    }
    

    在扩展布局中定义此 HeadCssSection,以便它采用扩展布局代码。如果要运行基本布局的代码,则将代码置于 else 条件下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 2016-08-05
      • 2023-03-16
      相关资源
      最近更新 更多