【问题标题】:ASP.Net MVC Some CSS and JS in shared layout should not be used in content pagesASP.Net MVC 共享布局中的一些 CSS 和 JS 不应该在内容页面中使用
【发布时间】:2019-02-08 08:18:39
【问题描述】:

我是 asp.net MVC 的新手。我有一些使用相同共享布局页面的视图。现在我得到了一个新的共享布局页面,它具有特定的设计,因此具有关联的新 css 和 js 文件。

我了解内容页面只是将它们的标记注入共享布局页面的@RenderBody 部分。但是我们仍然有什么方法可以确保某些 css 和 js 不应该影响子页面的标记。

【问题讨论】:

  • 如果想让css和js不影响页面内容,为什么还要加载呢?
  • @Programmer 加载的 css 和 js 仅包含母版页(sharelayout)的样式和功能脚本
  • 我可以举一个你的布局/子继承问题的例子吗?

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


【解决方案1】:

听起来您的意思是,您有针对您的布局页面的 CSS,这也(不希望地)影响您的视图?

正如您所说的那样,@RenderBody 只是将您视图中的内容插入到布局页面中,并且生成的是一个完整的文档。任何 CSS 或 JavaScript 都会影响整个页面。但是,您可以控制它影响哪些元素,我认为这是您的问题。

您只需要在 CSS 中使用更具体的选择器。 例如,如果您的母版页中有一个 div,您希望在该 div 上添加边框:

div { border: 1px solid black; }
<div></div>

会很糟糕,因为它会影响页面上的每个 div。尝试创建类并将它们应用于您的元素,例如:

.div-black-border { border: 1px solid black; }
<div class="div-black-border"></div>

同样的逻辑可以应用于你的 javascript 选择器(假设是问题所在)。

【讨论】:

    【解决方案2】:

    您编写的每条 css 规则都应针对最少的元素。如果布局中的某些内容不应该影响每个孩子,那么它不应该出现在布局中。

    这就是为什么使用类来限制范围和具体化的原因。

    为了提前一步,我通常限制每个页面的父容器,以确保如果创建了任何通用规则,它不会泄漏到所有站点。

    HTML

       <div class="main__container">
    
       </div>
    

    CSS

    .main__container {
       background: red;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 2014-08-16
      • 2017-06-06
      相关资源
      最近更新 更多