Je souhaite mettre à jour une table de base de données. Le contrôleur reçoit un modèle de vue avec les données appropriées. Si j'attribuer à chaque variable membre comme dans l'exemple ci-dessous cela fonctionneAffecter des variables de membre du modèle de vue au résultat de la requête
[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);
}
Cependant, je me demande s'il y a un moyen d'affecter directement l'objet modèle de vue comme ceci:
result = vm.ModifyUser;
Cela ne donne pas moi une erreur, mais il n'attribue pas les variables membres. Y a-t-il un moyen facile de faire ceci?
Merci!
Les ViewModels sont utilisés pour valider les entrées de l'utilisateur. Ils devraient être traités, validés puis convertis en entités. Je voudrais également utiliser db.Users.FirstOrDefaultAsync (x => x.Id == userID). Si cette valeur est nulle, cela signifie que votre utilisateur ne quitte pas. Dans ce cas, votre code va planter. – Seb
Vous voulez dire que je ne devrais pas passer le modèle de vue au contrôleur? Désolé, je ne comprends pas votre point. – mneumann
Vous devez passer la VM de la vue au contrôleur. Vous ne devriez pas le passer du contrôleur au modèle de données :) En théorie, votre machine virtuelle et votre modèle peuvent être différents, donc cela ne fonctionnerait pas. J'espère que je suis clair! – Seb