0

私はタスクモデルを持っています:

public class Task
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public DateTime? DueDate { get; set; }
    public int ProjectId { get; set; }
    public virtual ICollection<Useraccount> Useraccounts { get; set; }
    ...
}

ajax 経由でタスク モデルをコントローラーに送信したい:

function sendForm(projectId, useraccountIds, name, date, description, target) {
    $.ajax({
        url: target,
        type: "POST",
        contentType: 'application/json',
        data: JSON.stringify({
            projectId: projectId,
            useraccounts: useraccountIds,
            name : name,
            dueDate : date,
            description : description
        }),
        success: ajaxOnSuccess,
        error: function (jqXHR, exception) {
            alert('Es ist ein Fehler bei der Übertragung aufgetreten.');
        }
    });
}

これは正常に機能していますが、ユーザー アカウントに大きな問題があります。変数 useraccountIds は整数配列ですが、タスク モデルの ICollection Useraccounts にマップできません。

ID ごとに useraccount オブジェクトを作成し、それを useraccounts コレクションにマップするにはどうすればよいですか? これらのオブジェクトは、その ID 以外は必要ありません。

4

1 に答える 1

0

ID ごとに useraccount オブジェクトを作成し、それを useraccounts コレクションにマップするにはどうすればよいですか? これらのオブジェクトは、その ID 以外は必要ありません。

次に、次のように宣言するだけです。

public virtual IEnumerable<int> Useraccounts { get; set; }

Taskがビューモデルではなくエンティティである場合は、タスクのビューモデルを作成することをお勧めしUseraccountますId

更新:Useraccounts JavaScript であまりにも ビルドします。

var useraccounts = {
 { Id: value1 },
 { Id: value2 }
};

次に、それを投稿に含めます。

data: JSON.stringify({
    projectId: projectId,
    useraccounts: useraccounts ,
    name : name,
    dueDate : date,
    description : description
}),

Useraccount モデルに dataannotation がある場合、これは機能しません。そして、そうすると、 a のすべての必須フィールドをUseraccountビューにコピーし、非表示フィールド (ハック) に入れてメソッドに送り返す必要があるため、混乱します。

于 2013-04-09T07:16:02.710 に答える