ASP.NET MVC 3 RenderPartialが空のModelに入力されたときにディクショナリタイプエラーが発生しました

2318 ワード


あるユーザ情報のViewではPersonViewと呼ばれ、QualificationViewと呼ばれる別のpartial viewが呼び出された.PersonViewのモデルタイプはPerson、QualificationViewのモデルタイプはIEnumerableです.Personクラスには、Listの属性qualificationリストがある.PersonViewでは、次のコードでQualificaitonViewを参照します.
Html.RenderPartial("QualificationListControl",Model.qualificationList);

qualificationListがnullの場合、次のエラーが発生します.
 

'/'アプリケーションのサーバーエラー。


辞書に入力されるモデル・アイテムのタイプは「ConstructionMis.Dll.Entity.Person」ですが、この辞書には「System.Collections.Generic.IEnumerable`1[ConstructionMis.Dll.Entity.PersonQualification]のモデル・アイテムが必要です。


説明:現在のWebリクエストの実行中に、未処理の例外が発生しました.スタックトラッキング情報を確認して、このエラーとコードでエラーが発生したソースの詳細を確認してください.異常詳細:System.InvalidOperationException:辞書に入力されたモデルアイテムのタイプは「ConstructionMis.Dll.Entity.Person」ですが、この辞書には「System.Collections.Generic.IEnumerable`1[ConstructionMis.Dll.Entity.PersonQualification」のモデルアイテムが必要です.ソースエラー:
  96: </fieldset>

  97:  List<ConstructionMis.Dll.Entity.WorkExperience> workList =  ViewBag.workList; 

  98:  Html.RenderPartial("QualificationListControl",Model.qualificationList);

  99:  Html.RenderPartial("WorkExperienceControl", workList);

  100:}
 
    2      ,         。  ,   Vew A    Partial View B,  B  model ,        null,        View A model      。            。
  ,     partial view,         view,        。
  partial view  null             @Html.RenderPartial         ,      。
 Html.RenderPartial("QualificationListControl", Model.qualificationList, new ViewDataDictionary ());
    ,  ASP.NET MVC   bug,        bug     
http://aspnet.codeplex.com/workitem/8872

http://stackoverflow.com/questions/650393/asp-net-mvc-renderpartial-with-null-model-gets-passed-the-wrong-type