Обновленный MVC 2 до MVC3 получает исключение подшивки модели - PullRequest
4 голосов
/ 29 июля 2011

После обновления я получаю эту ошибку для некоторых просмотров.

Value cannot be null. Parameter name: value

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

[ArgumentNullException: Value cannot be null.
Parameter name: value]
   System.ComponentModel.DataAnnotations.ValidationContext.set_DisplayName(String value) +51903
   System.Web.Mvc.<Validate>d__1.MoveNext() +135
   System.Web.Mvc.<Validate>d__5.MoveNext() +318
   System.Web.Mvc.DefaultModelBinder.OnModelUpdated(ControllerContext controllerContext, ModelBindingContext bindingContext) +139
   System.Web.Mvc.DefaultModelBinder.BindComplexElementalModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Object model) +66
   System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +1367
   System.Web.Mvc.DefaultModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +449
   System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +317
   System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +117
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343
   System.Web.Mvc.Controller.ExecuteCore() +116
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8920029
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

Кто-нибудь знает, что проблема может быть?

редактирование: Нашел проблему,

[RequiredRequestedOnSiteDate]
[DisplayName("")]
public Date RequestedOnSiteDate { get; set; }

В MVC2 это работает, нам не нужно отображаемое имя для этого текстового поля, так как имя представлено в заголовке. Как я могу не иметь отображаемого имени без ошибки? Спасибо

Ответы [ 3 ]

0 голосов
/ 29 июля 2011

Вам просто нужно удалить @Html.DisplayFor(m => m.RequestOnSiteDate) из вашего кода, и вы никогда не увидите имя.

0 голосов
/ 29 июня 2015

Андерс, Вот через пару лет у меня точно такая же ошибка в MVC4.

[DisplayName("")]
public NexEnum.Veteran Veteran { get; set; }

Вы когда-нибудь разрешали это? Я решил это следующим образом:

[DisplayName(" ")]
public NexEnum.Veteran Veteran { get; set; }
0 голосов
/ 29 июля 2011

По предположению ...

Вместо того, чтобы использовать [Обязательный] в атрибуте DisplayName вашей модели, внутри сеттера есть ловушка, которая выдает исключение для нулевого значения, и связыватель пытается установитьсвойство к нулю, потому что это то, что приходит из формы.

Дайте нам код модели (и, возможно, метод действия контроллера), чтобы мы могли получить лучшее представление.

...