如何从DropDownList传递AspNetUser Id到控制器?

时间:2019-12-20 15:45:47

标签: c# asp.net-core viewbag

在名为Create的控制器的Task方法中,为创建“任务”而必须填充并传递到数据库的字段之一是AssignedTo,是AspNetUsers表的第Id列的外键。因此,创建了下表:

enter image description here

方法如下:

    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将被填充。

0 个答案:

没有答案