传递到字典中的模型项的类型为'System.Collections.Generic.List`1 []',但此字典需要类型为''的模型项

时间:2016-06-28 11:02:02

标签: c# asp.net-mvc

以下是viewModel的观点: -

@model _24By7CallAndBPOPvtLtd.Models.JobDetailandApplyModel

                                <table class="table table-striped">
                                @foreach (var item in Model.jobdetail)
                                {
                                    <tr>
                                        <td>
                                            @item.job_title
                                        </td>

                                        <td>
                                            <a href="@Url.Action("Edit", new { id = item.Job_ID })"><i class="glyphicon glyphicon-pencil"></i></a>
                                            <a href="@Url.Action("Delete", new { id = item.Job_ID })"><i class="glyphicon glyphicon-remove" style="color:red"></i></a>
                                        </td>
                                    </tr>

                                }
                        </table> 

                        <table class="table table-striped">
                            @foreach (var item in Model.jobapplied)
                            {
                        <tr>
                            <td>
                                @Html.DisplayFor(modelItem => item.User_Account.Full_Name)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.Job_Det.job_title)
                            </td>

                            <td>  
                                <a href="/Content/CV/@item.User_CV.Cv_Path" target="_blank">Download</a>
                            </td>

                        </tr>
                        }

                        </table>

这是我的控制器: -

public ActionResult Test1()
        {
               var jobs=db.Job_Det.ToList();
                return View(jobs);
        }
public ActionResult Test2()
        {
            db.Job_Applied.ToList();
                return View("Test1");
        }

这是我的ViewModel: -

public class JobDetailandApplyModel
    {
        public IEnumerable<Job_Det> jobdetail { get; set; }
        public IEnumerable<Job_Applied> jobapplied { get; set; }
    }

 public partial class Job_Applied
    {
        public int JobApplied_ID { get; set; }
        public int Employeer_ID { get; set; }
        public int Job_ID { get; set; }
        public int User_ID { get; set; }
        public Nullable<int> Cv_Id { get; set; }
        public Nullable<int> status_Id { get; set; }
        public System.DateTime date_applied { get; set; }
        public Nullable<System.TimeSpan> time_applied { get; set; }
        public string timestamp_applied { get; set; }

        public virtual Employeer Employeer { get; set; }
        public virtual Job_Det Job_Det { get; set; }
        public virtual Status Status { get; set; }
        public virtual User_CV User_CV { get; set; }
        public virtual User_Account User_Account { get; set; }
    }

这段代码有什么问题?。我在一个视图中使用viewModel传递两个模型,我需要在一个视图中显示两个列表..

3 个答案:

答案 0 :(得分:1)

尝试

var jobs = db.Job_Det.ToList();

var jobApplied = db.Job_Applied.Include(x => x.Job_Det).ToList();

JobDetailandApplyModel model = new JobDetailandApplyModel() {
   jobdetail = jobs,
   jobapplied = jobApplied 

}

 return View(model);

另外,不确定这是否有所作为但是替换

@Html.DisplayFor(modelItem => item.Job_Det.job_title)

@item.Job_Det.job_title

答案 1 :(得分:0)

您需要正确初始化模型并为两个属性中的每一个指定值。将您的控制器更改为以下内容:

var model = new JobDetailAndApplyModel();
model.jobdetail = db.Job_Det.ToList();
model.jobapplied = db.Job.Applied.ToList();
return view(model);

编辑:你有的Test2控制器不会做太多,当你传递一个字符串,就像它只使用名称与该字符串相同的视图。它没有传递任何模型,因此您将得到一个空引用错误。你需要这样的东西才能让它起作用:

return View("Test1", model);

使用上面的其他代码创建模型对象。

答案 2 :(得分:0)

您的视图需要JobDetailandApplyModel

类型的模型

Test1提供类型

的模型
  

列表&lt; Job_Det&gt;

Test2提供NO模型