Il modo migliore per testare i metodi di azione ASP.NET MVC che utilizzano BindingHelperExtensions.UpdateFrom?
-
09-06-2019 - |
Domanda
Nella gestione di un post del modulo ho qualcosa di simile
public ActionResult Insert()
{
Order order = new Order();
BindingHelperExtensions.UpdateFrom(order, this.Request.Form);
this.orderService.Save(order);
return this.RedirectToAction("Details", new { id = order.ID });
}
Non utilizzo parametri espliciti nel metodo poiché prevedo di dovermi adattare a un numero variabile di campi, ecc.e un metodo con più di 20 parametri non è allettante.
Suppongo che la mia unica opzione qui sia simulare l'intero HttpRequest, equivalente a ciò che ha fatto Rob Conery.È una pratica consigliata?Difficile dirlo con un quadro così nuovo.
Ho anche visto soluzioni che prevedono l'utilizzo di un ActionFilter in modo da poter trasformare la firma del metodo sopra in qualcosa di simile
[SomeFilter]
public Insert(Contact contact)
Soluzione
Ora sto usando ModelBinder in modo che il mio metodo di azione possa assomigliare (sostanzialmente) a:
public ActionResult Insert(Contact contact)
{
if (this.ViewData.ModelState.IsValid)
{
this.contactService.SaveContact(contact);
return this.RedirectToAction("Details", new { id = contact.ID });
}
else
{
return this.RedirectToAction("Create");
}
}
Altri suggerimenti
Avvolgilo in un'interfaccia e deridilo.
Utilizza NameValueDeserializer da http://www.codeplex.com/MVCContrib invece di UpdateFrom.