2011-12-27 17 views
5

@Section内のJS関数内にC#変数を配置すると、正しくないjavascriptが生成されます(MVC 4のみ)。@Section内のJavascript関数内でASP.NET MVC 4 - Razorがスコープエラーを引き起こします

MVC 3のJS関数では、すべてが期待通りに実行されます。

この同じコードをMVC4アプリケーションに配置すると、不正なJSが生成されます。

ページのHTMLが実際に次のようにレンダリングされます:

<script type="text/javascript"> 
    $(function() { 
     alert(12/27/2011 11:04:04 AM); 

とhtml)が

を放出します。 }

閉じるスクリプトタグは生成されません。

JS関数の終了中括弧は、Razorの終了中括弧と混同しているようです。

私はまた私の_Layout.cshtmlファイルにRenderSection(「テスト」、偽」)を宣言しています注。

+0

うわー、この投稿は私にmvc4について見つけました... –

答えて

4

少し古い返信ですが、同じ問題が発生していましたので、Microsoft.Connectに関するフィードバックレポートを提出しました。うまくいけば、完全リリース前にソートされるべきです。質問は頼まれたので、私が知っている

https://connect.microsoft.com/VisualStudio/feedback/details/720079/mvc-4-javascript-in-section-issue

+0

これをMicrosoft Connectに送信していただき、ありがとうございます。 –

1

私はこのような問題を見てきました。<text></text>タグ

+0

これは私の最初の考えでした。私は@:構文と同様に試しましたが、どちらもスコープの問題を解決しませんでした。 –

2

であなたの警告文をラップ私が)(今@ Html.Rawに決算JS funcを放出されたためにやってしまった。

これは再作成するのは簡単ですので、私はマイクロソフトのバグとしてこれを提出するつもりです。

@section test { 
    <script type="text/javascript"> 
     $(function() { 
      alert(@DateTime.Now); 
     @(Html.Raw("});")) 
    </script> 
} 
4

はフェイントでしたが、あなたはまた、このような何かを試すことができます。

@section test { 
    <script type="text/javascript"> 
     $(function() { 
      alert(@(DateTime.Now)); 
     }); 
    </script> 
} 

@の後に "()"があることに注意してください。

このヘルプが必要です。

0

間違いなくバグです。あなたが投稿したものよりもこの回避策が好まれます。何らかの理由で、他のかみそり要素が括弧を正しく解釈しているように見えるので、スクリプトコンテンツを別の中括弧で囲みます。

@section test { 
if (true) { 
<script type="text/javascript"> 
    $(function() { 
     alert(@DateTime.Now); 
    }); 
</script> 
} 
} 
3

申し訳ありませんが、私はちょうど私が最初の問題の構文が実際に動作する方法を見ていない...ここに助けることがチャイムができませんでした。 VS2010でMVC3を試してみると、 "DateTime"の下に緑色の波線が表示され、その上にカーソルを置くと「条件付きコンパイルがオフになっています」と表示されます。私は引用符で囲む場合でも、それはのように、作業を行います。

@section test { 

<script type="text/javascript"> 
    $(function() { 
     alert("@DateTime.Now"); 
    }); 
</script> 
} 

そして私は(F5)それを実行すると、期待どおりには、JavaScriptの警告が表示され、私はソースを表示するとき、それはレンダリング:

<script type="text/javascript"> 
    $(function() { 
     alert("07/09/2012 10:41:26"); 
    }); 
</script> 
関連する問題