59

MVC に部分的に変換された既存のアプリケーションに取り組んでいます。コントローラーが JSON ActionResult で応答するたびに、列挙型は文字列名ではなく数字として送信されます。デフォルトのシリアライザーは JSON.Net である必要があるように思えますが、これは列挙型を整数表現ではなく名前として送信する必要がありますが、ここではそうではありません。

これをデフォルトのシリアライザーとして設定する web.config 設定がありませんか? または、変更する必要がある別の設定はありますか?

4

2 に答える 2

73

ASP.Net MVC4 では、JsonResultクラスで使用されるデフォルトの JavaScript シリアライザーは依然としてJavaScriptSerializerです (コードで確認できます) 。

JSON.NetがデフォルトのJSシリアライザーですが、MVC4はそれを使用しないASP.Net Web.APIと混同していると思います。

そのため、MVC4 で動作するように JSON.Net を構成する必要があります (基本的には独自の を作成する必要がありますJsonNetResult)。それに関する記事はたくさんあります。

コントローラー アクション パラメーターにも JSON.Net を使用する場合は、モデル バインド中に独自のValueProviderFactory実装を記述する必要があります。

また、実装を次のように登録する必要があります。

ValueProviderFactories.Factories
    .Remove(ValueProviderFactories.Factories
                                  .OfType<JsonValueProviderFactory>().Single());
ValueProviderFactories.Factories.Add(new MyJsonValueProviderFactory());

組み込みをJsonValueProviderFactory例として使用するか、次の記事を使用できます: ASP.NET MVC 3 – Json.Net を使用した改善された JsonValueProviderFactory

于 2013-01-29T20:47:40.320 に答える