Как я могу передать значение выпадающего списка из представления в контроллер? - PullRequest
1 голос
/ 31 марта 2020

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

Вот мой Create.cs html

@model LanguageSchool.Models.Class_Students

@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}



@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Ders Kayıt Ekranı</h4>
        <hr />

        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.ClassId, "Ders Adı ve Fiyatı", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("ClassId", null, htmlAttributes: new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.ClassId, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.StudentId, "Öğrenci Adı", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("StudentId", null, htmlAttributes: new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.StudentId, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            <label class="control-label col-md-2">Taksit Sayısı</label>
            **<div class="col-md-10">
                @Html.DropDownList("SelectedItem", (IEnumerable<SelectListItem>) ViewData["ListItems"],new {@class="form-control"})
            </div>**
        </div>




<div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Kayıt" class="btn btn-success" />
                    @Html.ActionLink("Geri Dön", "Index", "", new { @class = "btn btn-primary" })
                </div>
            </div>
    </div>
}

Вот мой контроллер

public ActionResult Create()
        {
            List<SelectListItem> items = new List<SelectListItem>();
            items.Add(new SelectListItem(){Text = "1",Value = "1"});
            items.Add(new SelectListItem(){Text = "2",Value = "2"});
            items.Add(new SelectListItem(){Text = "3",Value = "3"});
            items.Add(new SelectListItem(){Text = "4",Value = "4"});
            items.Add(new SelectListItem(){Text = "5",Value = "5"});
            items.Add(new SelectListItem(){Text = "6",Value = "6"});

            ViewData["ListItems"] = items;

            var student = db.Students.ToList();
            IEnumerable<SelectListItem> selectList = from t in student
                select new SelectListItem
                {
                    Text = t.Firstname + " " + t.Lastname,
                    Value = t.Id.ToString()
                };

            var myClasses = db.Classes.ToList();
            IEnumerable<SelectListItem> selectListClass = from t in myClasses
                select new SelectListItem
                {
                    Text = t.Name + " - " + t.Price + " TL",
                    Value = t.Id.ToString()
                };

            ViewBag.ClassId = new SelectList(selectListClass, "Value", "Text");
            ViewBag.StudentId = new SelectList(selectList, "Value", "Text");
            return View();
        }


        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "Id,ClassId,StudentId,SelectedItem")] Class_Students class_Students)
        {

            if (ModelState.IsValid)
            {
                db.Class_Students.Add(class_Students);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.ClassId = new SelectList(db.Classes, "Id", "Name", class_Students.ClassId);
            ViewBag.StudentId = new SelectList(db.Students, "Id", "City", class_Students.StudentId);
            return View(class_Students);
        }

1 Ответ

1 голос
/ 31 марта 2020

Вы можете использовать DropdownlistFor.

Также нет данных модели в ViewBag, вместо этого добавьте их в модель.

Модель:

public class StudentsViewModel{
   public int StudentId {get;set;}
   IEnumerable<SelectListItem> Students {get;set;}
   //... other props

   public StudentsViewModel(){
       Students = db.Students.Select(t=> select new SelectListItem
            {
                Text = t.Name + " - " + t.Price + " TL",
                Value = t.Id.ToString()
            }).ToList();
   }
}

Вид:

 @Html.DropDownListFor(m => m.StudentId , Model.Students , "Please Select")
...