2011-07-29 5 views
4

アップグレード後、一部のビューでこのエラーが発生します。MVC2から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 

いずれも問題があることができることを任意のアイデアがありますか?

編集: 問題、MVC2で

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

この作品が見つかりましたが、我々は名前がヘッダに提示されているので、このテキストボックスのためのDisplayNameをたくありません。エラーのないdisplaynameを持つことはできますか?感謝の推測で

+0

あなたのモデルを見る必要があります。 –

+0

私は同様の問題がありますが、コードに[DisplayName( "")]属性がありません。あなたは偶然調査中にこの問題の他の原因を見つけましたか? – JamesEggers

+0

いいえ、それを解決しました、私はあなたを助けることができなくて残念です...また、それはLinqの例外ですので、おそらくあなたはnullコレクションで動作しているLinqクエリを持っています(あなたが上記の質問) – Anders

答えて

0

は...

むしろモデルのDisplayName属性で[必須]を使用するよりも、NULL値に例外をスローだとバインダーを設定しようとしているセッター内部のトラップがありますそれがフォームから入ってくるので、nullへのプロパティ。

私たちがより良いアイデアを得るために、モデルコード(コントローラの動作方法など)を教えてください。

+0

速い返信ありがとう、私の上に編集を受けてください – Anders

0

コードから@Html.DisplayFor(m => m.RequestOnSiteDate)を削除するだけで、その名前は表示されません。

+0

私は多くの場所からこのビューを使用するので、それを取り除くことはできません。 – Anders

+0

あなたは何を意味するのか分かりません。 'DisplayName'属性から名前を削除したので、' DisplayFor'を使用しているときにその名前を見たくないように見えるので、 'DisplayFor'を削除すると、あなたが望むものが達成されます。あなたの実際のユースケースを見て、あなたを助けてくれるように助けてください。 – Buildstarted

0

アンダー、 ここ数年後、MVC4で全く同じエラーが発生します。

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

解決しましたか? 私はこれでこれを解決しました:

[DisplayName(" ")] 
public NexEnum.Veteran Veteran { get; set; } 
関連する問題