任何人都可以帮助我纠正在MVC中创建视图的问题。通常我只是使用添加/视图,并基于我创建的方法为我搭建了一个视图。唯一的问题是,这一次我创建一个方法,通过查看和我不断收到此错误信息不正确的模型传递给视图MVC C#错误
The model item passed into the dictionary is of type 'UserJob',
but this dictionary requires a model item of type
'System.Collections.Generic.IEnumerable`1[UserJob]'.
我写的方法有以下...
public ActionResult AddJob(string userCode)
{
var jobs = jobsClient.GetAlljobs();
var alljobsCode = (from s in jobs select s.jobCode).ToList();
var usersJobs = (from s in db.UserJobs
where s.userCode == userCode
select s.jobCode).ToList();
var jobsNeeded = alljobsCode.Except(usersJobs);
List<UserJobsDTO> list = listBuilder(jobs, jobsNeeded);
ViewBag.jobCode = new SelectList(list, "jobCode", "jobDescription");
var model = new UserJob { userCode = userCode };
return View("AddJob", model);
}
private List<UserJobsDTO> listBuilder(
jobsService.jobsDTO[] jobs, IEnumerable<string> jobsNeeded)
{
List<UserJobsDTO> d = new List<UserJobsDTO>();
var f = jobsNeeded.ToArray();
var a = jobs.ToArray();
for (int i = 0; i < f.Length; i++)
{
d.Add(new UserJobsDTO()
{
jobCode = f.ElementAt(i),
description = a[i].jobDescription
});
}
return d;
}
当IM调试所有需要的数据被传递给我所宣称的所有正确的变量,但视图只是不玩球。我的印象是脚手架会自动在剃刀中为我生成一个可用的视图?但是这种方法只是想玩。任何人都可以指出我在正确的方向?
难道你不认为该错误信息是_self explanatory_?您正在使用'var model = new UserJob {userCode = userCode};'传递一个UserJob对象,但该视图需要一个UserJob集合。 –
我只想要一个通过,但如果我改变这行代码在剃刀'@model IEnumerable'只是这行代码'@model UserJob'它产生这个错误消息'CS1579:foreach语句不能操作变量'UserJob'类型,因为'UserJob'不包含'GetEnumerator'的公共定义 –
这也很明显。当你自己没有一个集合时,你为什么要用_foreach_ loop来迭代它呢? –