2009-12-20 12 views
13

Sto cercando di utilizzare UpdateModel (myItem, FormCollection) con asp.net MVC 2 ma non riesce con l'analisi dello stack di seguito.ASP.NET MVC problema 2 con 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) 

La mia azione è simile al seguente:

[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 }); 
    } 

... e la mia forma è simile al seguente:

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

Quale eccezione viene lanciata? NRE? – alexn

+0

Ecco l'eccezione: Il valore non può essere nullo o vuoto. Nome parametro: nome Descrizione: si è verificata un'eccezione non gestita durante l'esecuzione della richiesta Web corrente. Si prega di rivedere la traccia dello stack per ulteriori informazioni sull'errore e sulla sua origine nel codice. Dettagli eccezione: System.ArgumentException: il valore non può essere nullo o vuoto. Nome parametro: nome – Marcus

+0

Si prega di inviare il modello. – jfar

risposta

19

Questo è un bug confermato in MVC 2 RC. Se si dispone di the MVC source, è possibile rimuovere il controllo String.IsNullOrEmpty() da FormCollection.GetValue(), ricompilare e ridistribuire. La classe FormCollection è in src \ SystemWebMvc \ Mvc \ FormCollection.cs. Il team ne è a conoscenza e una correzione è pianificata per la prossima anteprima.

+0

Ok, grazie per l'heads-up! – Marcus

+0

Mi ci vuole un po 'per trovare questo post, ma contento di knwo. –

1

Aveva lo stesso problema qui quando si cerca di guardare Orchard CMS. Speriamo che lo risolvano presto.

Problemi correlati