リストを含む複雑なJSONオブジェクトをバインドするためのASP.NET MVC3の取得に関する問題があります。MVC3コンプレックスJSONリストバインディング
私のオブジェクトの構造は次のとおりです。さらに別の構成されたクラスを複製する必要ので、私はあなたがあなたの想像を使用することができます理解:)
ここでPOST呼び出しを行うことJavascriptを/ jQueryの -
public class PageModel
{
public PageModel() { }
public CustomObject1 CustomObject { get; set; }
public IEnumerable<CustomObject2> Objects { get; set; }
}
public class CustomObject1
{
public CustomObject1() { }
[Required]
public int CustomId1 { get; set; }
public string CustomName { get; set; }
}
public class CustomObject2
{
public CustomObject2() { }
[Required]
public int Custom2Id { get; set; }
public CustomObject3 SubItem { get; set; }
public int SubItemId { get; set; }
}
あなたはCustomObject3
を取ることができるが、同様の構造ではありません(すべてのJSはこれに至るまでが正しいデータを提供仮定):
//$obj1 has all data for the first object
var firstObj = { };
firstObj.CustomId1 = $obj1.Id;
firstObj.CustomName = $obj1.Name;
var i = 0;
//$objects is an array with all the data
$.each($objects, function() {
objsArray[i] = {
Custom2Id: $(this).Id,
SubItemId: $(this).itemId
};
++i;
});
$.ajax({
type: 'POST',
url: '/Action/Method',
data: { CustomObject: firstObj, Objects: objsArray },
//Success/error handlers here
});
そして最後に(私は、かなりいくつかのコードを知っている)、ここで私が持っている方法の概要です:
は、public class ActionController : Controller {
public JsonResult Method(PageModel model) {
//Gets here - model.CustomObject is filled correctly, and model.Objects has a correct count of whatever data I passed to the method - but all of the properties are empty!
}
}
私が言ったように、最初のオブジェクトは満たされ、デバッグとステップスルーのときにすべてのデータがそこにあります。 JSONオブジェクト内のObjects
配列内の2つのオブジェクトを渡すと、とSubItemId
は空ですが、Count
は2です。何がありますか?
contentType
がコールに'application/json'
と指定された場合、MVCは渡されるデータについて不平を言います。また、MVCメソッドのmodel
パラメータを2つの別々のパラメータに分割してみましたが、うまくいきません。
何か助けていただければ幸いです。
これは多くの助けてくれてありがとう! – Rookian
完全に機能するコードを探し求めてから、これが私の問題を解決しました!ありがとう!! –