我想更新一个数据库表。控制器接收具有适当数据的视图模型。如果我在这个例子中分配像每一个成员变量低于它的工作原理将视图模型中的成员变量赋值给查询结果
[HttpPost]
public ActionResult Edit(Admin_vm vm) {
var result = (from Users in db.Users
where Users.ID == usrID
select Users
).FirstOrDefault();
result.CompanyName = vm.ModifyUser.CompanyName;
//this is where I would assign every single member variable
db.SaveChanges();
return View(vm);
}
但是,我不知道是否有直接分配,像这样的视图模型对象的方式:
result = vm.ModifyUser;
这不给我错误,但它不分配成员变量。是否有捷径可寻?
谢谢!
ViewModels用于验证用户输入。他们应该处理,验证并转换为实体。我也会使用db.Users.FirstOrDefaultAsync(x => x.Id == userID)。如果这个返回null,这意味着你的用户不会退出。在这种情况下,你的代码会崩溃。 – Seb
你的意思是我不应该将视图模型传递给控制器?对不起,我不明白你的观点。 – mneumann
您应该将VM从视图传递到控制器。你不应该把它从控制器传递给数据模型:)理论上,你的虚拟机和你的模型可能不同,所以它不起作用。希望我很清楚! – Seb