En mi Controlador antes de que se modifique un Modelo (actualizado o eliminado) Estoy intentando verificar que el Usuario que realiza la acción posee realmente el objeto que está intentando modificar.Comprobación de propiedad del modelo
Actualmente estoy haciendo esto en el nivel de método y parece un poco redundante.
[HttpPost]
public ActionResult Edit(Notebook notebook)
{
if (notebook.UserProfileId != WebSecurity.CurrentUserId) { return HttpNotFound(); }
if (ModelState.IsValid)
{
db.Entry(notebook).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(notebook);
}
¿Existe una forma genérica de hacerlo que pueda ser reutilizable en varios modelos?
¿Es posible hacer esto con un ActionFilter
?
¿No se agregaría [Bind (Exclude = "UserProfileID"]] para evitar que el enlace del modelo lo cambie? Idealmente, me gustaría devolver un ViewModel que no contenga ningún campo ID y solo tener los almacenados en TempData o algo así (no del todo seguro) ... – mezmi
Sí, pero ¿de dónde vendría? :) – blowdart
Sí, creo que realmente no lo había pensado. Como dije, me gustaría devolver un ViewModel que no contenga ningún campo de identificación. Simplemente no sé dónde almacenar ese ID temporalmente en MVC entre llamadas, además de usar Session>:) .... De esa manera pude devuelva mi POCO al Controlador y use AutoMapper o algo para hidratar ViewModel. – mezmi