从HTML.DropDownList中获取选定值返回控制器(.Net MVC)

AGu*_*ald 3 asp.net-mvc-3

在MVC应用程序中,我有一个显示任务的视图.任务应由分配给他们的员工过滤.员工显示在下拉列表中.

@using (Html.BeginForm("EmployeeDropUsed", "Task", new { id = ?? }))
{
    @Html.DropDownList(
        "EmployeeDrop", new SelectList(Model.Employees, "Id", "EmployeeName"), "Select employee",
        new
        {
            onchange = @"
            var form = document.forms[0]; 
            form.submit();"
        })
}
Run Code Online (Sandbox Code Playgroud)

我有一个带有ActionResult的TaskController,从表单中获取数据:

[HttpPost]
public ActionResult EmployeeDropUsed(int id)
{
    Employee e = er.GetById(id);
    return LoadControls(er.GetAll(), e.Tasks.ToList());
}
Run Code Online (Sandbox Code Playgroud)

ViewModel看起来像这样

public class TaskModel
{
    public TaskModel(List<Employee> employees, List<Task> tasks)
    {
        Employees = employees;
        Tasks = tasks;
    }

    public List<Task> Tasks { get; set; }
    public List<Employee> Employees { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何从退回到控制器中获取所选值.我尝试在模型中使用DropDownListFor和EmployeeId属性:

@Html.DropDownListFor(m => Model.EmployeeId, Model.Employees, "Select Employee")

public int EmployeeId { get; set; }
Run Code Online (Sandbox Code Playgroud)

结果是id始终为0.

wak*_*aka 5

这个lambda表达式不是不正确吗?不应该

@Html.DropDownListFor(m => m.EmployeeId ....
Run Code Online (Sandbox Code Playgroud)

代替

@Html.DropDownListFor(m => Model.EmployeeId
Run Code Online (Sandbox Code Playgroud)