Как заполнить выпадающий список в режиме редактирования ASP.NET MVC (C #) без использования Entity Framework - PullRequest
0 голосов
/ 19 сентября 2019

Я не фанат использования Entity Framework, поэтому я хочу сделать так, чтобы при редактировании здесь

Позиционный индексный список

Я хочу отобразитьзначение отдела в раскрывающемся списке, и когда пользователь выбирает раскрывающийся список, он загружает весь список из базы данных.

Вот мой код контроллера в редактировании:

//GET data from database
public ActionResult UpdatePos(int pid)
{
            DepartmentList posmodel = new DepartmentList();
            DataTable dt = new DataTable();

            using (MySqlConnection mysqlcon = new MySqlConnection(conn))
            {
                mysqlcon.Open();
                string qry = "SELECT id,position,department FROM positions WHERE id = @pid";
                MySqlDataAdapter da = new MySqlDataAdapter(qry, mysqlcon);
                da.SelectCommand.Parameters.AddWithValue("@pid", pid);
                da.Fill(dt);
            }

            if (dt.Rows.Count == 1)
            {
                //id and posistion is showing in my view
                posmodel.Model.pid = Convert.ToInt32(dt.Rows[0][0].ToString());
                posmodel.Model.position = dt.Rows[0][1].ToString();
                posmodel.dplist = """"I don't know what should I code here""""
                return View(posmodel);
            }
            else
                return RedirectToAction("Index");
}

Вот мой вид:

<div class="form-group">
            @Html.LabelFor(model => model.Model.position, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Model.position, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Model.position, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.dplist, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(model => model.dplist, new SelectList(Model.dplist, "deptname", "deptname",Model.Model.did))
                @Html.ValidationMessageFor(model => model.dplist, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Model.pid, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Model.pid, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Model.pid, "", new { @class = "text-danger" })
            </div>
        </div>

Моя модель

 public class PositionModel
    {
        [Display(Name = "Position")]
        [Required(ErrorMessage = "Position required.")]
        public string position { get; set; }
        [Display(Name = "Department")]
        public string dept { get; set; }
        public int pid { get; set; }

        //public List<DeptList> dplist { get; set; }
        public DeptList DeptList { get; set; }
        public int did { get; set; }
        public string deptname { get; set; }

    }

    public class DeptList
    {
        public int did { get; set; }
        public string deptname { get; set; }
    }

вывод должен быть

1 Ответ

0 голосов
/ 19 сентября 2019
  posmodel.dplist = new SelectList(dt.AsDataView(), "pid", "position");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...