加载 HTML 时出现 MVC 错误。具有键“MY KEY”的 ViewData 项属于“System.String”类型,但必须属于“IEnumerable<SelectListItem>

Posted

技术标签:

【中文标题】加载 HTML 时出现 MVC 错误。具有键“MY KEY”的 ViewData 项属于“System.String”类型,但必须属于“IEnumerable<SelectListItem>”类型【英文标题】:The MVC error on load HTML. ViewData item that has the key 'MY KEY' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>' 【发布时间】:2022-01-24 01:21:45 【问题描述】:

我正在做一个 MVC APP。对于这个例子..

在我对DropDownListFor 的定义中,我定义了类似的东西。

  @html.DropDownListFor(model => model.SelectedSystem, Model.Systems, new  @class = "form-control listbox",id="Origin" )

我的模型加载到控制器中,在某些情况下它会加载Model.System。 Model.System 的类型为List&lt;SelectListItem&gt;

选择的选项在model.SelectedSystem 中,即string type。效果很好……

我面临的问题是Model.System 为空。

我的控制器看起来像这样

public ActionResult Index()
        
            var apiEntitySyncViewModel = new ApiEntitySyncViewModel
            
                Systems = _entitySyncService.GetEnvironments(),
            ;
            return View(apiEntitySyncViewModel);
        

运行时出现消息The ViewData item that has the key SelectedSystemOrigin is of type System.String but must be of type IEnumerable&lt;SelectListItem&gt;

我怎样才能画一个空的 DropDownListFor 而不会出现这个错误

【问题讨论】:

【参考方案1】:

试试这个

public ActionResult Index()

   var apiEntitySyncViewModel = new ApiEntitySyncViewModel
   
       Systems = _entitySyncService.GetEnvironments(),
  ;
if(apiEntitySyncViewModel.Systems==null) apiEntitySyncViewModel.Systems = new List <SelectListItem>();

//or you can try
new List <SelectListItem> new SelectListItem Value="0", Text ="Empty"  


  return View(apiEntitySyncViewModel);

【讨论】:

以上是关于加载 HTML 时出现 MVC 错误。具有键“MY KEY”的 ViewData 项属于“System.String”类型,但必须属于“IEnumerable<SelectListItem>的主要内容,如果未能解决你的问题,请参考以下文章

加载 Bigquery 表时出现内部错误

配置复制从属时加载 mysql 5.6 主转储时出现错误 1794

加载时间戳时出现 Bigquery 错误

运行 mvc 应用程序时出现编译错误

在 ajax 调用 Mvc-4 应用程序中实现验证时出现错误

iPython 笔记本 - 加载 CIFAR - 10 数据集时出现内存错误