JToken
オブジェクトに着信する動的JSONをバインドするMVCコントローラを取得する方法はありますか?JSONをMVCコントローラのJTokenにバインドする
私はこれを行うことができますAPIのコントローラーを使用する場合:
public class TestController : ApiController
{
public void Post(JToken json)
{
}
}
をして掲載JSONがJToken
オブジェクトに変換されます。 しかし、MVCコントローラを使用すると、サーバーエラーが発生します。
public class TestController : Controller
{
[HttpPost]
public ActionResult TestAction(JToken json)
{
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
}
私が入ってくるデータを取得するが、他の方法を実現するが、私はMVCコントローラでJTokenとしてそれを受け取ることを好むだろう。
私は、カスタムValueProviderFactory
from hereを使用しようとしましたが、私はまだサーバーエラーが私のAJAX呼び出しから返され得る:
$.ajax({
url: '/Test/TestAction', //or /api/Test
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({foo:"bar",wibble:"wobble"})
}).done(function (res) {
alert('ok');
}).fail(function (xhr, status, error) {
alert('error')
});
UPDATE:
注 - 私は交換した上で述べたようにデフォルトはJsonValueProviderFactory
で、1つはJson.NET
に基づいています。
さらなる調査では、この問題はDefaultModelBinder.CreateModel
メソッドで発生するようです。 がJToken
インスタンスを作成しようとすると、JToken
が抽象クラスであるため失敗します。 TestAction
のパラメータをJObject
に変更しても、オブジェクトの階層構造の下にさらにJToken
のプロパティがあるため、おそらく失敗します。
はfooとwibble特性を有するあなたのJTokenクラスですか? –
@Karthik [Json.NET JToken Class](http://www.newtonsoft.com/json/help/html/t_newtonsoft_json_linq_jtoken.htm) –
okです。そのクラスにはfooとwibbleプロパティが含まれていますか? –