我有一个任务模型:
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.');
}
});
}
这工作正常,但useraccounts存在很大问题。 变量useraccountIds是一个整数数组,但无法映射到我的任务模型的ICollection Useraccounts。
我如何为每个id创建一个useraccount对象并将其映射到useraccounts集合?这些对象不需要超过其id。
答案 0 :(得分:0)
我如何为每个id创建一个useraccount对象并将其映射到 useraccounts集合?那些对象不需要超过它 标识。
然后你只需将其声明为:
public virtual IEnumerable<int> Useraccounts { get; set; }
如果Task
是一个实体而不是一个viewmodel,那么最好为你的Task编写一个viewmodel,因为你提到除{{1}之外你不需要Useraccount
的其他属性}}
<强>更新强>
也可以在javascript中构建Id
:
Useraccounts
然后将其包含在您的帖子中:
var useraccounts = {
{ Id: value1 },
{ Id: value2 }
};
如果您在Useraccount模型上有数据注释,那将无效。如果你这样做,那就太乱了,因为你必须将data: JSON.stringify({
projectId: projectId,
useraccounts: useraccounts ,
name : name,
dueDate : date,
description : description
}),
的所有必填字段复制到视图中,把它放在一个隐藏的字段中(hacky)并将它发送回方法。