Quindi sto progettando un framework MVC. Nel nome di mantenere tutto staticamente digitato e non magico, ho avuto un bel problema con il passaggio "automatico" dei modelli a un controller.
Quindi, tradizionalmente, di solito non vedo più di un modello alla volta in un controller per quanto riguarda la popolazione automatica.
Ad esempio, prendi questo tutorial. C'è un metodo come questo nel controller:
[HttpPost]
public ActionResult Create(Movie newMovie)
{
if (ModelState.IsValid)
{
db.AddToMovies(newMovie);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View(newMovie);
}
}
La mia preoccupazione è passare un modello Movie
al metodo Create
che è popolato dai valori FORM "magicamente". Nella mia API, questo dovrebbe essere facilmente possibile e apparirebbe simile al routing:
var movie=router.Controller((context) => new MovieController(context))
.WithModel(() => new Movie());
movie.Handles("/movie/create").With((controller, model) => controller.Create(model));
La mia preoccupazione è che è molto più difficile avere più modelli a causa delle limitazioni con il sistema di tipi di C #. Ovviamente, il controller può sempre creare manualmente i modelli dai valori FORM e così via, ma non è altrettanto bello.
Quindi, la mia domanda: è comune avere qualcosa come Foo(Movie model)
e Bar(SomeClass model)
nella stessa classe controller? È una buona idea per me provare a supportare un tale scenario, o è solo un sintomo di mettere troppa logica non correlata in un singolo controller?
Nota: se sei preoccupato di come questa API fluente sia persino possibile, la risposta sono delegati generici .. un sacco di delegati generici :) (ma finora molto poca riflessione)