2009-12-20 4 views
13

Я пытаюсь использовать updatemodel (myItem, formcollection) с asp.net mvc 2, но он терпит неудачу с трассировкой стека ниже.Проблема ASP.NET MVC 2 с 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) 

Мои действия выглядит следующим образом:

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

... и моя форма выглядит следующим образом:

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

Какое исключение выбрасывается? ЯРД? – alexn

+0

Вот исключение: Значение не может быть пустым или пустым. Имя параметра: name Описание: Необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде. Сведения об исключении: System.ArgumentException: Значение не может быть пустым или пустым. Имя параметра: name – Marcus

+0

Пожалуйста, разместите вашу модель. – jfar

ответ

19

Это подтвердил ошибка в MVC 2 RC. Если у вас есть the MVC source, вы можете удалить проверку String.IsNullOrEmpty() из FormCollection.GetValue(), перекомпилировать и повторно развернуть. Класс FormCollection находится в src \ SystemWebMvc \ Mvc \ FormCollection.cs. Команда знает об этом, и исправление запланировано для следующего предварительного просмотра.

+0

Хорошо, спасибо за хедз-ап! – Marcus

+0

Мне понадобится время, чтобы найти этот пост, но рад кну. –

1

Если у вас такая же проблема при попытке взглянуть на Orchard CMS. Надеюсь, они скоро это исправит.

Смежные вопросы