在显式模型绑定中更新集合属性VS隐式模型绑定?

时间:2016-12-02 11:36:30

标签: asp.net-mvc entity-framework model-binding

我有一个实体模型,它具有为应用程序注册的用户的集合属性(多对多关系)。 在编辑视图中,我使用隐式模型绑定来编辑具有单个属性(TitleDueDate等...)和Users(复选框)的任务对象:

    public ActionResult Edit([Bind(Include = "Id,Title,Description,DueDate,Status")] UserTask task, string[] asndUsers/*users IDs*/)
    {
        if (ModelState.IsValid)
        {
            task.Users = new List<ApplicationUser>();
            if (asndUsers != null)
            {
                foreach (var userId in asndUsers)
                {
                    var user = context.Users.Find(userId);
                    task.Users.Add(user);
                }
            }
            context.Entry(task).State = EntityState.Modified;
            context.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(task);
    }

但这不起作用,单个属性已更新,但用户无法更新。

然后我使用了显式模型绑定

var task = context.Tasks.Include(t => t.Users).SingleOrDefault(s => s.Id == id);
task.Users = new List<ApplicationUser>();
    foreach (var userId in asndUsers)
    {
        var user = context.Users.Single(u => u.Id == userId);
        task.Users.Add(user);
    }
if (TryUpdateModel(task, "", new string[] { "Title", "Description", "DueDate", "Status" }))
{
    context.SaveChanges();
    return RedirectToAction("Index");
}

它有效,但不知道隐式绑定没有做什么

0 个答案:

没有答案