空のファイル アップロード要素を含むフォームを送信した際にNullReferenceExceptionエラーがスローされる


解説

Sitecore Formsで、必須でない空のファイル アップロード(File Upload)フィールドを含んだフォームを送信すると、以下の未処理の例外が発生して失敗する可能性があります。

[NullReferenceException: Object reference not set to an instance of an object.]
   Sitecore.ExperienceForms.Mvc.Pipelines.ExecuteSubmit.StoreFiles.StoreUploadedFiles(List`1 files, String itemId) +313
   Sitecore.ExperienceForms.Mvc.Pipelines.ExecuteSubmit.StoreFiles.Process(ExecuteSubmitActionsEventArgs args) +568
   (Object , Object ) +53
   Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) +489
   Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists) +235
   Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain) +21
   Sitecore.Mvc.Pipelines.PipelineService.RunPipeline(String pipelineName, TArgs args) +231
   Sitecore.Mvc.Pipelines.PipelineService.RunPipeline(String pipelineName, TArgs args, Func`2 resultGetter) +225
   Sitecore.ExperienceForms.Mvc.Processing.FormSubmitHandler.ExecuteSubmitActions(FormSubmitContext submitContext) +323
   Sitecore.ExperienceForms.Mvc.Processing.FormSubmitHandler.Submit(FormSubmitContext submitContext) +108
   Sitecore.ExperienceForms.Mvc.Controllers.BaseFormBuilderController.ProcessFormData(FormDataModel data) +1243
   Sitecore.ExperienceForms.Mvc.Controllers.FormBuilderController.Index(FormDataModel data) +129
   lambda_method(Closure , ControllerBase , Object[] ) +138

この問題は、以下のドキュメントに記載されている@Html.RenderFormScripts()ヘルパーによって追加される必要のあるスクリプトが欠落することにより発生します。
https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-manager/add-a-form-to-a-webpage.html

解決策

全てのSitecoreバージョンについて、以下のドキュメントのMVC レイアウトの追加セクションに記載されている方法に従って、MVCレイアウトに@Html.RenderFormScripts()ヘルパーを追加してください。
https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-manager/add-a-form-to-a-webpage.html