Есть ли ошибка в ASP.Net MVC 2 RC версии для UpdateModel ()? - PullRequest
4 голосов
/ 15 января 2010

Я пытаюсь реализовать версию MVC 2 RC, последнюю версию ASP.Net MVC, и она не может сделать простую Controller.UpdateModel (объект) без выброса этого исключения:

Не удалось обновить модель типа «[Вставить пространство имен объекта, который здесь обновляется]».

InvalidOperationException

Вот трассировка стека:

в System.Web.Mvc.Controller.UpdateModel [TModel] (модель TModel, префикс String, String [] includeProperties, String [] excludeProperties, IValueProvider valueProvider) в System.Web.Mvc.Controller.UpdateModel [TModel] (модель TModel) в Ccis.Cgov360.Web.InternalApp.Controllers.AdminController.MailingLabelTypeSelected () в C: \ Projects \ Meadowlark \ Development \ Meadowlark \ Applications \ InternalApp \ Controllers \ AdminController.cs: строка 1528 в lambda_method (ExecutionScope, ControllerBase, Object []) в System.Web.Mvc.ActionMethodDispatcher.Execute (контроллер ControllerBase, параметры Object []) в System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary 2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 параметры) в System.Web.Mvc.ControllerActionInvoker. <> c__DisplayClassd.b__a () в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (фильтр IActionFilter, ActionExecutingContext preContext, продолжение Func`1)

Когда я использую MVC Preview 2, он прекрасно работает и обновляет модель без каких-либо исключений. Я видел в другом месте, что есть ошибка в версии RC, это то же самое?

Я потратил слишком много времени, пытаясь решить эту проблему. Я надеялся получить релиз RC, чтобы мы могли начать использовать Html-помощники, такие как TextBoxFor <>, CheckBoxFor <> и т. Д., И проверку на стороне клиента.

Ответы [ 2 ]

3 голосов
/ 22 января 2010

Чтобы добавить к комментарию Леви, если вы перехватываете исключение и возвращаете представление Edit, вы должны увидеть сообщение проверки для полей, не прошедших проверку, при условии, что ваше представление содержит:

<%= Html.ValidationMessageFor(model => model.name) %>

И ваше действие «Редактирование контроллера» будет содержать ...

     try {
         UpdateModel(entity, new [] {  "name", "address1", "address2", "city", "state", "zip" } );
         TempData["Message"] = "Success";
         return RedirectToAction("List");
     }
     catch {
         TempData["Message"] = "Error saving form";
         return View(entity);
     }
2 голосов
/ 05 марта 2010

Я тоже столкнулся с этой проблемой.

В качестве обходного пути я просто вызываю TryUpdateModel () вместо UpdateModel ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...