ASP.NET MVC TryValidateModel () Problemas quando o modelo é modificado

Tenho um processo de formulário em duas etapas em que o primeiro conjunto de dados é armazenado na sessã

[IsMp4File]
[Required(ErrorMessage = "* Please select a video to upload")]
public HttpPostedFileBase VideoClip { get; set; }

[Required(ErrorMessage = "* Please select a thumbmail image")]
public HttpPostedFileBase VideoThumbnail{ get;  set; }

public string VideoFileName { get { return VideoClip.FileName; } }

public NewsWizardStep CurrentStep { get; set; }

...

public enum NewsWizardStep : int
{
  One = 1,
  Two = 2,
  Three = 3,
  Four = 4,
  Five = 5,
  Six = 6
}

Controlado

public ActionResult TvCreate(TvNewsVideoVM modelVM)
{
   if (modelVM.CurrentStep == NewsWizardStep.Two)
   {
     var sessionModel = ((TvNewsVideoVM)Session["TvModelVM"]);

     modelVM.VideoClip = sessionModel.VideoClip;
     modelVM.VideoThumbnail = sessionModel.VideoThumbnail;
   }

   if (TryValidateModel(modelVM))
   {
     ...
   }
}

TryValidateModel(modelVM) retorna false, dizendo que VideoClip e VideoThumnail são necessários, apesar de serem mapeados a partir de seesionModel para o viewModel. Adicionei um ponto de interrupção e verifiquei que eles não são nulo

Parece que há alguma funcionalidade subjacente que eu não conheço em relação ao funcionamento de ModelState e ValidateModel (), mas não sei o qu

ATUALIZA

Eu não diria que resolvi o problema, mas descobri uma solução alternativa que não é tão bonita. Ao entrar no ModelState, é possível definir o ModelValue usandoSetModelValue(), remova manualmente o erro do estado do modelo e chameTryValidateModel() - você pode nem precisar adicionar os valores, basta remover o erro que ainda não tentei. Aqui está o meu trabalh

if (modelVM.CurrentStep == NewsWizardStep.Two)
{
  var sessionModel = ((MtTvNewsVideoVM)Session["MtTvModelVM"]);

  modelVM.VideoClip = sessionModel.VideoClip;
  modelVM.VideoThumbnail = sessionModel.VideoThumbnail;

  ModelState.SetModelValue("VideoClip", new  ValueProviderResult(sessionModel.VideoThumbnail, sessionModel.VideoFileName, CultureInfo.CurrentCulture));
                ModelState.SetModelValue("VideoThumbnail", new ValueProviderResult(sessionModel.VideoClip, sessionModel.VideoFileName, CultureInfo.CurrentCulture));

  ModelState["VideoClip"].Errors.RemoveAt(0);
  ModelState["VideoThumbnail"].Errors.RemoveAt(0);
}

questionAnswers(1)

yourAnswerToTheQuestion