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();"
})
}
フォームからデータを取得する ActionResult を持つ TaskController があります。
[HttpPost]
public ActionResult EmployeeDropUsed(int id)
{
Employee e = er.GetById(id);
return LoadControls(er.GetAll(), e.Tasks.ToList());
}
ビューモデルはこんな感じ
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; }
}
問題は、選択した値をドロップからコントローラーに戻す方法がわからないことです。モデルで DropDownListFor と EmployeeId プロパティを使用してみました:
@Html.DropDownListFor(m => Model.EmployeeId, Model.Employees, "Select Employee")
public int EmployeeId { get; set; }
その結果、id は常に 0 になります。