所以我还在教自己MVC,我现在正在尝试更新用户记录。
我有以下代码:
// The Controller:
[HttpPost]
public ActionResult Edit(User model)
{
if (ModelState.IsValid)
{
User u = new User();
u.Update(model);
}
return RedirectToAction("Index", "Users");
}
// The Model:
public void Update(User u)
{
var user = GetUserById(u.UserId);
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
}
此代码执行完全正常,但实际上并不更新数据库。
以下值似乎是数据库中的值,而不是View中的值。为什么会这样,我无法理解。
非常感谢任何帮助。
答案 0 :(得分:0)
您可能忘记更新自己的字段了。
在这种情况下,您可以使用TryUpdateModel();
更新字段。
你应该有这样的东西:
[HttpPost]
public ActionResult Edit(User model)
{
if (ModelState.IsValid)
{
User u = new User();
u.Update(model);
}
return RedirectToAction("Index", "Users");
}
public void Update(User u)
{
var user = GetUserById(u.UserId);
TryUpdateModel(user); // You forgot this
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
}
答案 1 :(得分:0)
您正在从Controller调用以下代码并传入从视图模型生成的用户。
public void Update(User u)
{
var user = GetUserById(u.UserId);
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
}
但是,上面的代码尝试根据用户的ID检索用户,然后只是执行更新,而不实际更改任何数据。