2

我被 Razor 解析器问题难住了,我的开发设置正在运行,但在我部署的站点上失败了。

具体来说,我在@section 中有以下剃刀标记:

@section HtmlHeader 
{
    <style>
        @@media (max-width: 400px) 
        {
            #lnkHome { display: none; }
        }
    </style>       
}

这在我的本地开发设置上工作正常,但在服务器上我得到:

“@”在代码块的开头无效。只有标识符、关键字、注释、"(" 和 "{" 是有效的。

现在我知道我可以很容易地解决这个问题:

@("@")media (max-width: 400px) 

逃避@@,但我想了解为什么行为会有所不同。

需要明确的是 - 问题似乎只发生在@section 内部。如果我在某个部分之外有@@,则这两个版本都没有问题。但是,在实时站点(运行 Server 2008 R2)部分中,它很糟糕。

我检查了什么:

  • 在两台机器上运行相同版本的 .NET 4.5
  • 所有 Razor 和 MVC 文件都是复制本地部署和 Web 部署
  • 从开发机器中删除了 GAC 的 MVC4 和 Razor 安装
  • 有效的开发环境:Windows 8,实时服务器:Windows 2008 R2

我假设“正确”行为是针对 @@ 的,但它肯定不适用于实时服务器。

4

1 回答 1

1

您是否可能针对不同版本的 Razor?同样的事情发生在我身上,我将版本 2 定位在本地,而版本 1 以某种方式定位在服务器上。

于 2013-06-07T17:27:02.063 回答