2009-12-20 5 views
13

J'essaie d'utiliser updatemodel (myItem, formcollection) avec asp.net mvc 2 mais il échoue avec la trace de la pile ci-dessous.ASP.NET MVC 2 problème avec UpdateModel

at System.Web.Mvc.FormCollection.GetValue(String name) 
    at System.Web.Mvc.DefaultModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
    at System.Web.Mvc.Controller.TryUpdateModel[TModel](TModel model, String prefix, String[] includeProperties, String[] excludeProperties, IValueProvider valueProvider) 
    at System.Web.Mvc.Controller.TryUpdateModel[TModel](TModel model, IValueProvider valueProvider) 
    at Stormbreaker.Dashboard.Controllers.DashboardController`1.Update(FormCollection collection) in D:\Projects\SVN\Stormbreaker\trunk\Stormbreaker.Dashboard\Controllers\DashboardController.cs:line 23 
    at lambda_method(ExecutionScope , ControllerBase , Object[]) 
    at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) 

Mon action ressemble à ceci:

[AcceptVerbs(HttpVerbs.Post)] 
    [ValidateInput(false)] 
    public ActionResult Update(FormCollection collection) { 
     UpdateModel(CurrentItem, collection); 
     CurrentItem = (T)_repository.Update(CurrentItem); 
     return RedirectToAction("edit", new { pagePath = CurrentItem.UrlSegment }); 
    } 

... et ma forme ressemble à ceci:

<% using (Html.BeginForm("Update","Dashboard", FormMethod.Post, new { name = "editForm" })) %> 
<% { %> 
    <div> 
     <%=Html.EditorForModel() %> 
     <input type="submit" value="Save" /> 
    </div>    
<% } %> 
+0

Quelle exception est levée? NRE? – alexn

+0

Voici l'exception: La valeur ne peut pas être nulle ou vide. Nom du paramètre: nom Description: Une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code. Détails d'exception: System.ArgumentException: La valeur ne peut pas être nulle ou vide. Nom du paramètre: nom – Marcus

+0

Veuillez poster votre modèle. – jfar

Répondre

19

C'est un bogue confirmé dans MVC 2 RC. Si vous avez the MVC source, vous pouvez supprimer la vérification String.IsNullOrEmpty() de FormCollection.GetValue(), recompiler et redéployer. La classe FormCollection est à src \ SystemWebMvc \ Mvc \ FormCollection.cs. L'équipe en est consciente et un correctif est prévu pour l'aperçu suivant.

+0

Ok, merci pour le heads-up! – Marcus

+0

Il me faut un certain temps pour trouver ce poste, mais heureux de knwo. –

1

Avait le même problème ici en essayant de regarder Orchard CMS. Espérons qu'ils le répareront bientôt.

Questions connexes