さて、これは簡単なものでなければなりません(しかし、明らかに私にとってはそうではありません)。すべてのデータをJSON形式でコントローラーに送信するAJAXルーチンがあります。すべてが完璧で、コントローラーに戻ったModelオブジェクトの属性には、ビューから送信したすべてのデータが正しく入力されています。これらの属性の1つがオブジェクトのリストであり、ビューから、リストに入力する必要のあるオブジェクトのIDのみを送信していることを除いて。何が起こっているのかというと、ModelオブジェクトのList属性が、ID情報のみを取得したインスタンスで埋められており、ビューから送信されたリストに存在するIDを使用して他のすべての属性をロードする必要がありました。
説明するためのいくつかのコード:
// Creating Documento Json Object
var docs = { "IDDocumento": "" };
// Creating Lote Json Object
var lote = {
"IDLote": "",
"Numero": "",
"Documentos": []
};
// Set Lote's Values
lote.IDLote = $("#IDLote").val();
lote.Numero = $("#Numero").val();
$.each($('input[name="Documento"]:checked'), function (index, element) {
var temp = $(element).attr('id').replace('Documento_', '').trim();
// Set Documento individual Value
docs.IDDocumento = temp; // << HERE IM FILLING WITH THE DESIRED OBJECT ID
// adding to Lote.Documentos List Naviagtion Attribute
lote.Documentos.push(docs);
docs = { "IDDocumento": "" };
});
$.ajax({
url: '/Lote/Edit',
data: JSON.stringify(lote),
type: 'POST',
contentType: 'application/json;',
dataType: 'json',
success: function (result) {
if (result.Success == "1") {
window.location.href = "/Lote/Index";
}
else {
//Take care of the exception...
}
}
});
そして、上記のビューが強く型付けされているクラスは次のとおりです。
public class Lote
{
[Key]
public int IDLote { get; set; }
[Required]
[MaxLength(20)]
public string Numero {get;set;}
public List<Documento> Documentos { get; set; }
最後に、Navigation属性オブジェクトタイプのクラスは次のとおりです。
public class Documento
{
[Key]
public int IDDocumento { get; set; }
[Required]
[MaxLength(60)]
public string Nome { get; set; }
public List<Lote> Lotes { get; set; }
}
何か助けはありますか?