文章内容

2017/3/30 12:11:38,作 者: 黄兵

不存在具有键“EquipmentId”的“IEnumerable<SelectListItem>”类型的 ViewData 项

最近在写代码的时候遇到这样一个错误,错误提示如下:

不存在具有键“EquipmentId”的“IEnumerable<SelectListItem>”类型的 ViewData 项。

截图如下:


后台代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[HttpGet]
        public ActionResult ProjectDetails()
        {
            using(UnitOfWork uow=new UnitOfWork())
            {
               var getAllExpert= uow.ExpertRepository.GetAll().ToList();
               IEnumerable<ExpertEquipmentViewModel> Expert = getAllExpert.OrderByDescending(n => n.Id)
                   .Select(x => new ExpertEquipmentViewModel 
               {
                   ExpertId=x.Id,
                   ExpertName=x.Project_ExpertName
               }).ToList();
 
               ViewData["Expert"] = new SelectList(Expert, "ExpertId""ExpertName"); ;
 
               var getAllEquipment = uow.EquipmentRepository.GetAll().ToList();
                IEnumerable<ExpertEquipmentViewModel>  Equipment=getAllEquipment.OrderByDescending(c=>c.Id)
                    .Select(c=>new ExpertEquipmentViewModel
                {
                    EquipmentId=c.Id,
                    EquipmentName=c.Project_EquipmentName
                }).ToList();
 
                   ViewData["Equipemnt"] = getAllEquipment;
            }
            return View();
        }

前台代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div class="hr-line-dashed"></div>
     <div class="form-group">
        @Html.LabelFor(model => model.ExpertsId, htmlAttributes: new { @class "control-label col-md-2" })
        <div class="col-sm-10">
           @Html.DropDownList("ExpertId", ViewData["Expert"as SelectList, htmlAttributes: new { @class "form-control" })
           @Html.ValidationMessageFor(model => model.ExpertsId, ""new { @class "text-danger" })
         </div>
       </div>
       <div class="hr-line-dashed"></div>
      <div class="form-group">
         @Html.LabelFor(model => model.EquipmentId, htmlAttributes: new { @class "control-label col-md-2" })
           <div class="col-sm-10">
              @Html.DropDownList("EquipmentId", ViewData["Equipemnt"as SelectList, htmlAttributes: new { @class "form-control" })
              @Html.ValidationMessageFor(model => model.EquipmentId, ""new { @class "text-danger" })
           </div>
       </div>

修改后台源代码之后如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[HttpGet]
        public ActionResult ProjectDetails()
        {
            using(UnitOfWork uow=new UnitOfWork())
            {
               var getAllExpert= uow.ExpertRepository.GetAll().ToList();
               IEnumerable<ExpertEquipmentViewModel> Expert = getAllExpert.OrderByDescending(n => n.Id)
                   .Select(x => new ExpertEquipmentViewModel 
               {
                   ExpertId=x.Id,
                   ExpertName=x.Project_ExpertName
               }).ToList();
 
               ViewData["Expert"] = new SelectList(Expert, "ExpertId""ExpertName"); 
 
               var getAllEquipment = uow.EquipmentRepository.GetAll().ToList();
                IEnumerable<ExpertEquipmentViewModel>  Equipment=getAllEquipment.OrderByDescending(c=>c.Id)
                    .Select(c=>new ExpertEquipmentViewModel
                {
                    EquipmentId=c.Id,
                    EquipmentName=c.Project_EquipmentName
                }).ToList();
                //注意这里修改
                ViewData["Equipemnt"] = new SelectList(Equipment, "EquipmentId""EquipmentName");
            }
            return View();
        }

看一下SelectList 构造函数 (IEnumerable, String, String)

public SelectList(
	IEnumerable items,
	string dataValueField,
	string dataTextField
)

后台传输一个SelectList 构造函数,前端接收。一般这么处理,不会出现什么问题。

如果有什么问题给我在下面留言。

分享到:

发表评论

评论列表