Desde que actualicé de MVC 2 a MVC 3 RC, el uso de TryUpdateModel causa una NullReferenceException. Este problema solo ocurre cuando ejecuto mi método de acción como parte de una prueba unitaria. Ejecutarlo en el servidor real funciona como se esperaba.TryUpdateModel lanza NullReferenceException en prueba de unidad ASP.NET MVC 3
Así es un seguimiento de pila de la excepción:
System.NullReferenceException: Objeto referencia no establecida en una instancia de un objeto . en System.Web.Mvc.JsonValueProviderFactory.GetValueProvider (ControllerContext controllerContext) en System.Web.Mvc.ValueProviderFactoryCollection. <> c_ DisplayClassc.b _7 (ValueProviderFactory fábrica) en System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext() en System.Collections.Generic.List colección) en System.Linq. Enumerable.ToList [TSource] (IEnumerable`1 fuente) a System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider (ControllerContext ControllerContext) en System.Web.Mvc.Controller.TryUpdateModel [TModel] (TModel modelo, prefijo cadena)
... mi propio código f rom aquí en ....
En caso de que las cosas, mi controlador tiene la siguiente firma:
[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult Edit(int id, FormCollection collection)
{
}
Mi conjetura es que esto tiene que ver con la nueva forma DI trabaja en MVC3, pero No puedo entender lo que estoy haciendo mal. Quizás hay algo en términos de configuración de DI que se requiere en MVC 3, pero no fue requerido en MVC 2?
No es una buena idea, porque está agregando código para facilitar las pruebas en el código de producción. También se ejecuta en cada solicitud, y es completamente innecesario. –
¿Por qué no simplemente utiliza la línea "ValueProvider = ..." en la configuración de su controlador en las pruebas de su unidad. – JoelFan