我想更新一個數據庫表。控制器接收具有適當數據的視圖模型。如果我在這個例子中分配像每一個成員變量低於它的工作原理將視圖模型中的成員變量賦值給查詢結果
[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