2015-04-21 141 views
0

我是ASP.NET MVC4的新用户。我正在做最后的项目,我正在创建MVC4 Web应用程序。ASP.NET MVC 4 Multiselectlist

在我的web应用程序中,当我创建新项目时,我应该选择多个员工。我对多选列表进行了研究,但没有结果。

您可以请我提供一步一步的指导,如何实现我的上述目标。

我应该如何更改我的项目模型?

public partial class Project 
{ 
    public Project() 
    { 
     this.Tasks = new HashSet<Task>(); 
    } 

    public int Project_ID { get; set; } 
    public string Project_Title { get; set; } 
    public int Client_Id { get; set; } 
    public string Project_Description { get; set; } 
    public System.DateTime Project_StartDate { get; set; } 
    public Nullable<System.DateTime> Project_EstEndDate { get; set; } 
    public string Project_Status { get; set; } 
    public int Project_Manager_Id { get; set; } 
    **public string Project_Emps { get; set; }** 

    public Nullable<System.DateTime> Project_ActualEndDate { get; set; } 
    public int Project_Tasks { get; set; } 


    public virtual List<Employee> Employees { get; set; } 

} 

Project_Emps是所选雇员名称应存储的列。

以及我的控制器和视图应该是什么样子?

+0

我还有另一个模型员工,员工姓名缩写被保存。我应该从数据库中获得员工姓名列表,并将其放入我的“创建项目视图”中的下拉列表中。当我点击创建项目按钮时,所有选定的员工都应保存到Project表的Project_Emps列中。 – Sirin

+0

是int emp_Id并绑定并显示字符串Emp_Name以显示 – Sirin

回答

0

您需要从创建视图模型开始。它需要包含IEnumerable<T>财产选定员工的ID

public class ProjectVM 
{ 
    .... // add only those properties of Project that you need to edit 

    [Display(Name = "Employees")] 
    public int[] SelectedEmployees 
    public SelectList EmployeeList { get; set; } 
} 

然后在控制器

public ActionResult Create() 
{ 
    var model = new ProjectVM() 
    model.EmployeeList = new SelectList(db.Employees, "Emp_Id", "Emp_Name"); 
    return View(model); 
} 

和视图

@model yourAssembly.ProjectVM 
@using(Html.BeginForm()) 
{ 
    .... 
    @Html.LabelFor(m => m.SelectedEmployees) 
    @Html.ListBoxFor(m => m.SelectedEmployees, Model.EmployeeList) 
    .... 

和POST回

public ActionResult Create(ProjectVM model) 
{ 
    // model.SelectedEmployees contains a collection of the selected Employee Emp_Id values