3

webapi を使用すると、パラメータ タイプとしてJObjectまたはを使用して、動的 JSON をアクションに POST することができます。dynamic

動的 JSON オブジェクトを Web API に渡す - Newtonsoft の例

MVC4 の非 api アクションでこれを試してみると、うまくいかないようです。私のアクション署名は次のとおりです。

public async Task<ActionResult> Post(JObject requestObj)

ダイナミックを使用すると、一見非ダイナミックなオブジェクトが得られます。JObject を試すと、次のエラーが発生します。

[MissingMethodException]: Cannot create an abstract class.

MVC4 の非 API アクションでこれに似たことが可能ですか?

4

3 に答える 3

3

以前のプロジェクトでは、動的 JSON を Web Api コントローラーにポストする必要がありました。私たちが最終的に行ったことは、クライアント側で JSON を取得し、それを Base64 でエンコードすることでした。次に、Base64 でエンコードされた JSON をバックエンドにポストするだけです。次に、バックエンドは Base64 入力をデコードし、Newtonsoft JSON を使用して動的オブジェクトに変換しました (実際には、強く型付けされたクラスに変換され、フォールバックは動的でした)。私は同意します、それはハッキーですが、うまくいきました。

于 2015-08-20T22:16:07.743 に答える
0

無理そうです。MSDN のドキュメントhttps://msdn.microsoft.com/en-us/library/system.web.mvc.controller.aspxを参照してください。

アクション メソッドは、無制限のジェネリック型パラメーターを持つことはできません。無制限のジェネリック型パラメーターには、空のパラメーター リストがあります。無制限のジェネリック型は、オープン ジェネリック型とも呼ばれます。無制限のジェネリック型パラメーターの詳細については、「型パラメーターの制約」の「無制限の型パラメーター」セクションを参照してください。

APIController から派生させるか、おそらく CustomModelBinder を作成する必要があります (これについてはよくわかりません)。

次のリンクを見てください。

JObject をアクションに投稿する

オブジェクト型の .NET MVC アクション パラメータ

抽象クラスをコントローラーのアクションのパラメーターにすることはできますか?

それが役に立てば幸い!

于 2015-08-20T20:02:09.900 に答える