0

私は ASP.NET MVC 4 で Visual Studio 2012 RC を使用しています。これは私を夢中にさせています。これが何度か尋ねられたことは知っていますが、MVC 4 のソリューションが見つからず、MVC 3 の統合ソリューションも見つかりません。 .何か足りないに違いない...

私がやりたいのは、JavaScriptのブロックにac#変数を出力することだけです。これは些細なことであり、実行できるようにする必要がありますが、私が試したすべての回避策/ハックにもかかわらず、「条件付きコンパイルがオフになっています」エラーを取り除くことはできません。これが単なる警告であれば問題ありませんが、これはエラーです。Visual Studio 内でビューを閉じるとコンパイルされて正常に動作しますが、開いているとコンパイルすらできず、受け入れられません。

/*@cc_on @*/andを使用し/*@("@cc_on @")*/て、条件付きコンパイルを有効にしようとしましたが、役に立ちませんでした。実行すると、無効@(serverVar)な文字エラー (@) が返されます。私も試してみましたが@Html.Raw、他にもいくつかあります。

エラーなしでかみそりコードを含める唯一の方法は、かみそりコードが引用符で囲まれている場合です。これは、文字列ではうまく機能しますが、int と bool では機能しません。

@{
    int serverVar = 5;
}

<script>
    var obj = { jsVar: @serverVar };
</script>

私はこれをどこでも検索しましたが、合意された解決策が見つかりません。何か不足していますか?どんな助けでも大歓迎です。

4

3 に答える 3

1

JavaScriptModel を使用する ( http://jsm.codeplex.com )

このようにして、面倒なインライン JavaScript を使用せずに、サーバー側の変数を JavaScript に簡単に転送できます。

コントローラー アクションに次のコードを記述するだけです。

this.AddJavaScriptVariable("VariableNameInJavaScript", serverVar);

すべてのページに複数の変数を設定する場合は、次のドキュメントに記載されているようなフィルターを使用します。

http://jsm.codeplex.com/wikipage?title=Use%20JavaScriptModel%20in%20a%20global%20filter&referringTitle=ドキュメント

編集:変数が多数ある場合は、それらを分類して、異なるリテラルに追加する必要があります。例えば

this.AddJavaScriptVariables("Config.UserId", userId,
    "Config.SomeOtherConfig", someOtherConfigValue,
    "MyGoogleMapController.Pushpins", GetMapPushpins());
于 2013-01-10T11:20:34.723 に答える
0

うーん、このエラーを取り除く方法はないと思いますが、それでもすべてがコンパイルされるので、素晴らしいです。

于 2013-01-05T22:02:26.000 に答える