1

DotNetNukeServiceframeworkはASP.NETMVC2に基づいているため、すぐに使用できるjsonモデルバインディングは含まれていません。

私はいくつかのアプローチを試しました:

  • MVC3 jsonvalueprovider
  • カスタムjsonモデルバインダー
  • カスタムバリュープロバイダー

これらを登録するコードが呼び出されましたが、これらのオブジェクト自体のメソッドは呼び出されませんでした。

DotNetNukeのように、これらを登録すること自体が興味深い領域であり、global.asaxファイルにアクセスできません。

また、コントローラーで要求入力ストリームを逆シリアル化しようとしましたが、そこでnullreferenceexceptionが発生し、正しいデータサイズが取得されましたが、すべてnullです。

何か案は?!

4

2 に答える 2

1

Ok、

クリーンで機能的な回避策があります。

ここからjqueryプラグインを使用しています。これにより、jsonが標準のフォームフォーム投稿に変換されます。これをjquery&knockoutで使用すると、次のようになります。

 $.ajax({ 
       url: '<%= ModulePath %>Api/Register/Search', 
       type: 'POST',  
       data: $.toDictionary(ko.mapping.toJS($root),"",true), 
       success: function (data) { //do something });

誰かがjsonを直接動作させるためのアイデアを持っている場合に備えて、質問を開いたままにしておきます。

于 2012-10-02T14:51:56.177 に答える
0

これを機能させるには、JSON値プロバイダーを登録する必要があります。詳細については、 http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspxを参照してください。

バリュープロバイダーを登録する最良の方法は、ルートマッパーで登録することです。ルートマッパーが複数回呼び出されることがあるため、登録が1回だけ発生するように注意してください。制御していないサーバーにデプロイされたモジュールでこれを行う場合は、ファクトリコレクションの内容を調べて、他のサービスがバリュープロバイダーを登録していないことを確認する必要があります。

DNN7のServicesFrameworkはWebAPIに基づいており、JSONをネイティブにサポートしているため、この煩わしさはすぐに解消されます。

于 2012-10-03T00:38:25.360 に答える