Обновленный MVC 2 до MVC3 получает исключение подшивки модели
После обновления я получаю эту ошибку для некоторых просмотров.
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 ответа
Андерс, вот через пару лет у меня точно такая же ошибка в MVC4.
[DisplayName("")]
public NexEnum.Veteran Veteran { get; set; }
Вы когда-нибудь решали это? Я решил это следующим образом:
[DisplayName(" ")]
public NexEnum.Veteran Veteran { get; set; }
Вы просто должны удалить @Html.DisplayFor(m => m.RequestOnSiteDate)
из вашего кода, и вы никогда не увидите имя.
На догадку...
Вместо того, чтобы использовать [Обязательный] в атрибуте DisplayName вашей модели, внутри установщика есть ловушка, которая вызывает исключение для нулевого значения, и средство связывания пытается установить для свойства значение null, потому что это то, что приходит из формы.
Дайте нам код модели (и, возможно, метод действия контроллера), чтобы мы могли получить лучшее представление.