Обновленный 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, потому что это то, что приходит из формы.

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

Другие вопросы по тегам