“在执行此操作之前必须绑定数据源”

时间:2014-03-07 14:20:51

标签: asp.net-mvc asp.net-mvc-3 razor

我正在尝试在MVC 3中显示网格, 我收到以下错误:

必须先绑定数据源才能执行此操作。

这是我的模特:

   public class EmpModel
    {
        public string UserName { get; set; }
        public string Password { get; set; }
        public int EmpID { get; set; }
        public string EName { get; set; }
        public int Age { get; set; }
        public string Gender { get; set; }
        public string Qualification { get; set; }
        public string Address { get; set; }
        public string EmailID { get; set; }
        public int DeptID { get; set; }
        public string DeptName { get; set; }
        public string DeptHead { get; set; }
        public int Deptnumber { get; set; }
    }

这是控制器:

TestMVCEntities testEmp = new TestMVCEntities();
EmpModel empmod = new EmpModel();
public ActionResult Index()
{
    List<EmpModel> emp = new List<EmpModel>();
    return View();
}

这是我的观点:

@model IEnumerable<EmpApplication.Models.EmpModel>
@{
    ViewBag.Title = "Index";
    WebGrid grid = new WebGrid();
}

<h2>List of Employee</h2>

@grid.GetHtml(columns: new [] {
    grid.Column("EmpID"),
    grid.Column("EName"),
    grid.Column("EmailID"),
    grid.Column("Qualification")
})

2 个答案:

答案 0 :(得分:4)

您必须将source数据作为参数传递。 WebGrid期望IEnumerable<Object>IEnumerable<dynamic>source

您必须将列表返回到您的视图:

public ActionResult Index()
{
    List<EmpModel> emp = new List<EmpModel>();

    return View(emp);
}

然后将其传递给WebGrid构造函数:

@{
    ViewBag.Title = "Index";
    WebGrid grid = new WebGrid(Model);;
}

答案 1 :(得分:0)

我确定它的作品......

public ActionResult Index()
{
List<EmpModel> emp = new List<EmpModel>();
return View(emp.AsEnumerable());
}

您只需将后续列表更改为enumerable