2

さて、これは簡単なものでなければなりません(しかし、明らかに私にとってはそうではありません)。すべてのデータを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; }
}

何か助けはありますか?

4

0 に答える 0