@media媒体查询和ASP.NET MVC剃刀语法冲突

Sni*_*fer 201 css razor media-queries asp.net-mvc-3

我有一个使用Razor视图引擎在ASP.NET MVC中运行的大型站点.

我有一个基本样式表,其中包含整个站点的所有通用样式.但是,有时候,我在页面中有页面特定的样式<head>- 通常这是一行或两行.

我并不特别喜欢将CSS放入<head>其中并不严格区分关注点,但对于一两行,这确实是特定于该页面的,我更喜欢不必附加另一个文件并添加到带宽中.

我有一个实例虽然我想将页面特定的媒体查询放入其中<head>,但因为媒体查询使用@符号和括号{}它与剃刀语法冲突:

@section cphPageHead{
     <style>
        /* PAGE SPECIFIC CSS */
        ...

        @media only screen and (max-width : 960px) <-- the @ symbol here is clashing!
            {
               ... }
            } 
    </style>
}  
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题?

arc*_*hil 445

使用double @@符号.这将逃脱@符号并在客户端正确呈现@media


A-S*_*ani 24

还记得在@@之后加一个空格:

 @@ media only screen and (max-width : 960px)
Run Code Online (Sandbox Code Playgroud)

@@media 没有空间对我不起作用.

  • 使用压缩CSS时有与此类似的问题;我认为@@周围有文字,因此Razor难以解释。我选择在@@之前添加空格。谢谢你的提示。 (2认同)
  • 即使有空间,这对我也不起作用。[Daut 的回答](/sf/answers/3675023971/) 有 2 个不同的 `style` 元素确实有效! (2认同)

Dau*_*aut 12

我意识到这是一个老问题,但这是唯一对我有用的解决方案:

@section cphPageHead{
    <style type="text/css" media="screen and (max-width:959px)">
    </style>


    <style type="text/css" media="screen and (min-width:960px)">
    </style>
}
Run Code Online (Sandbox Code Playgroud)