ASP.NET MVC 2 problem with UpdateModel
Asked Answered
A

2

13

I'm trying to use updatemodel(myItem, formcollection) with asp.net mvc 2 but it fails with the stack trace below.

   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)

My action looks like this:

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

... and my form looks like this:

<% using (Html.BeginForm("Update","Dashboard", FormMethod.Post, new { name = "editForm" } )) %>
<% { %>
    <div>
        <%=Html.EditorForModel() %>
        <input type="submit" value="Save" />
    </div>            
<% } %>
Asomatous answered 20/12, 2009 at 20:42 Comment(2)
What exception is thrown? NRE?Argumentation
Here is the exception: Value cannot be null or empty. Parameter name: name Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.ArgumentException: Value cannot be null or empty. Parameter name: nameAsomatous
O
19

This is a confirmed bug in MVC 2 RC. If you have the MVC source, you can remove the String.IsNullOrEmpty() check from FormCollection.GetValue(), recompile, and redeploy. The FormCollection class is at src\SystemWebMvc\Mvc\FormCollection.cs. The team is aware of it and a fix is planned for the next preview.

Onceover answered 21/12, 2009 at 1:27 Comment(1)
It takes me a while to find this post, but glad to knwo.Lohengrin
J
1

Had the same issue here when trying to look at Orchard CMS. Lets hope they fix it soon.

Jermyn answered 4/1, 2010 at 14:1 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.