Mvc Сохранить элементы из каскадного DropdownList - PullRequest
0 голосов
/ 26 сентября 2018

Это мой контроллер.

public class DokuzasController : Controller
{
    schoolEntities se = new schoolEntities();

    public ActionResult Index()
    {
        IEnumerable<DersViewModel> leclist;
        HttpResponseMessage responselec = GlobalVariables.LecturesClient.GetAsync("dokuzas").Result;
        leclist = responselec.Content.ReadAsAsync<IEnumerable<DersViewModel>>().Result;
        return View(leclist);
    }

    public ActionResult AddOrEdit()
    {
        List<ders> dersList = se.ders.ToList();
        ViewBag.dersList = new SelectList(dersList, "DersID", "Ders1");
        return View();
    }

    public JsonResult GetDersList(int DersID)
    {
        se.Configuration.ProxyCreationEnabled = false;
        List<saat> saatList = se.saat.Where(x => x.DersID == DersID).ToList();
        return Json(saatList, JsonRequestBehavior.AllowGet);

    }
    [HttpPost]
    public ActionResult AddOrEdit(DersViewModel lec)
    {
        if (lec.LectureId == 0)
        {
            HttpResponseMessage response = GlobalVariables.LecturesClient.PostAsJsonAsync("dokuzas", lec).Result;
            TempData["SuccessMessage"] = "Kaydedildi.";
        }
        else
        {
            HttpResponseMessage response = GlobalVariables.LecturesClient.PutAsJsonAsync("dokuzas/" + lec.LectureId, lec).Result;
            TempData["SuccessMessage"] = "Güncellendi.";
        }
        return RedirectToAction("Index");
    }
}

А это часть AddOrEdit.

@model Mvc.Models.DersViewModel
<div class="container">
<div class="form-group">
    @if (ViewBag.dersList != null)
    {
        @Html.DropDownListFor(model => model.DersID, ViewBag.dersList as SelectList, "--Lecture--", new { @class = "form-control" })
    }
</div>

<div class="form-group">
    @Html.DropDownListFor(model => model.SaatID, new SelectList(" "), "--Time--", new { @class = "form-control" })
</div>
</div>
@using (Html.BeginForm())
{
<div class="form-group">
    <input type="submit" value="Kaydet" class="btn button" />
    <input type="reset" value="Sil" class="btn button" />
</div>
}
<script src="~/Scripts/jquery-3.3.1.min.js"></script>
<script>
$(document).ready(function () {
    $("#DersID").change(function () {
        $.get("/Dokuzas/GetDersList", { DersID: $("#DersID").val() }, 
function (data) {
            $("#SaatID").empty();
            $.each(data, function (index, row) {
                $("#SaatID").append("<option value='" + row.SaatID + "'>" + row.Saat1 + "</option>");
            });
        });
    });
});
</script>

Я создаю каскадный выпадающий список для лекции и времени, но не могу сохранить его в таблице,Когда я выбираю элементы и нажимаю кнопку «Отправить», я могу отправить в таблицу только ноль.Это не сохранило то, что я выбираю из выпадающего списка.Как я могу сохранить из моего каскадного выпадающего списка в таблицу?

1 Ответ

0 голосов
/ 26 сентября 2018

Ваши выпадающие списки не находятся внутри вашей формы, поэтому они не включены в сообщение.Попробуйте следующий код для вашего представления.

@model Mvc.Models.DersViewModel
@using (Html.BeginForm())
{
<div class="container">
<div class="form-group">
    @if (ViewBag.dersList != null)
    {
        @Html.DropDownListFor(model => model.DersID, ViewBag.dersList as SelectList, "--Lecture--", new { @class = "form-control" })
    }
</div>

<div class="form-group">
    @Html.DropDownListFor(model => model.SaatID, new SelectList(" "), "--Time--", new { @class = "form-control" })
</div>
</div>

<div class="form-group">
    <input type="submit" value="Kaydet" class="btn button" />
    <input type="reset" value="Sil" class="btn button" />
</div>
}
<script src="~/Scripts/jquery-3.3.1.min.js"></script>
<script>
$(document).ready(function () {
    $("#DersID").change(function () {
        $.get("/Dokuzas/GetDersList", { DersID: $("#DersID").val() }, 
function (data) {
            $("#SaatID").empty();
            $.each(data, function (index, row) {
                $("#SaatID").append("<option value='" + row.SaatID + "'>" + row.Saat1 + "</option>");
            });
        });
    });
});
</script>
...