在名为Create
的控制器的Task
方法中,为创建“任务”而必须填充并传递到数据库的字段之一是AssignedTo
,是AspNetUsers表的第Id
列的外键。因此,创建了下表:
方法如下:
public IActionResult Create()
{
ViewBag.Users = userManager.Users.Select(u => u.UserName).ToList();
return View();
}
+
public IActionResult Create(TaskModel task)
{
int phaseId = (int)TempData["id"];
string connectionString = Configuration["ConnectionStrings:DefaultConnection"];
using (SqlConnection connection = new SqlConnection(connectionString))
{
string sql = "CreateTask";
using (SqlCommand command = new SqlCommand(sql, connection))
{
command.CommandType = CommandType.StoredProcedure;
............................
parameter = new SqlParameter
{
ParameterName = "@AssignedTo",
Value = task.AssignedTo,
SqlDbType = SqlDbType.NVarChar
};
command.Parameters.Add(parameter);
............................
}
}
return RedirectToAction("Index", "Task", new { id = phaseId });
}
关键是-使用ViewBag,我能够在视图中填充DropDownList。
<div class="form-group">
<label asp-for="AssignedTo"></label>
@Html.DropDownList("DropDownList", new SelectList(ViewBag.Users))
<input class="form-control" asp-for="AssignedTo" />
</div>
但是我无法弄清楚如何获取所选用户的ID,然后将其传递给控制器,因此提交后,数据库列AssignedTo
将被填充。