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 のインストールを Dev マシンから削除
  • 動作する開発環境: Windows 8、ライブ サーバー: Windows 2008 R2

「正しい」動作は @@ であると想定していますが、実際のサーバーでは動作していません。

4

1 に答える 1

1

異なるバージョンの Razor をターゲットにしている可能性がありますか? バージョン 2 をローカルでターゲットにし、バージョン 1 をサーバー上でターゲットにした場合と同じことが起こりました。

于 2013-06-07T17:27:02.063 に答える