Per ciascuna delle entità aziendali ho un modello di visualizzazione corrispondente.ASP.NET MVC: come posso ottenere la convalida della mia regola aziendale fino a raggiungere il livello di presentazione?
Ho un regolatore di CRUD generico che funziona così:
[HttpPost]
public virtual ActionResult Create(TViewModel model, int? id)
{
// Validate input
if (!ModelState.IsValid)
return Json(Failure(createView, model.SelectLists(repository)));
// Prepare Model
var entity = new TModel();
// Add to repository
UpdateModel(entity);
repository.Add(entity);
repository.Save();
return Json(CreateSuccess(entity));
}
Io uso le annotazioni di dati sul mio punto di vista e proprietà modello Questa grande opera per semplice convalida dell'input.
Ora ho un caso in cui voglio essere sicuro che un record duplicato non venga creato per caso.
Il mio primo istinto è mettere questa logica nel metodo Aggiungi del repository. Questa implementazione sarebbe facile, ma come faccio a ottenere il repository per aggiungere un errore di stato del modello e restituire all'utente alcune informazioni utili? Mi sento come se ci fosse una soluzione là fuori, ma non ho avuto molta fortuna a cercare.
Grazie per qualsiasi aiuto!
Sembra un buon riassunto del concetto base di Nerd Dinner che ho postato qui sotto. Come ho affermato nella mia risposta, non mi piace l'idea di usare le eccezioni e invece chiamerò proattivamente un metodo Validate() sull'entità (o repository in questo caso). Grazie! –