9

さて、ASP.NET MVC チームが asp.net mvc 4 の開発者プレビューでかなり重大なバグをリリースしたと思います。または、何かばかげたことをしています...問題と再現手順を次に示します。

  1. 新しい MVC 4 モバイル アプリケーションを作成する
  2. レイアウトに新しいセクションを作成します (例: @RenderSection("head",false))
  3. コントローラーアクションでは、メッセージをViewBagにスローするだけです
  4. 次に、メイン レイアウトを使用するビューで、以下のコードを追加します。
@section head {
    $(function() { 
        var newVariableName = "@(ViewBag.Message)";
    });
}

Razor パーサーは、セクションの終了ブレースではなく、dom ロードされた jquery の終了ブレースに対してセクションが完了したと実際に考えていることに気付くでしょう。asp.net MVC 3 アプリケーションでまったく同じコードを試してみましたが、問題なく動作しました。

ASP.NET MVC 4 Developer Preview でこのバグに遭遇した人はいますか?

4

2 に答える 2

6

この問題を解決する手っ取り早いハックは、Java スクリプトの周りに < text > ブロック < /text > を使用することです。ASP.NET MVC チームがこのバグを解決するまでは、次のようになります。

@{
<text>
    $(function()
    {
        var newVariableName = "@(ViewBag.Message)";
    });
</text>
}
于 2011-12-19T19:19:11.967 に答える
0

上記のように、cshtmlファイルでこれを試してください...

@section head {
@{
    function JSMeth1()
    {
        // doing your stuff, razor parser wont suck
    }
}}
于 2011-12-19T23:18:30.693 に答える