Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Progerpro
0 / 0 / 0
Регистрация: 28.09.2015
Сообщений: 34
1

DropDownListFor не передает id в контроллер

10.01.2019, 23:11. Просмотров 426. Ответов 1

У меня реализована динамическая загрузка списка по выбору из другого списка. Но данные из второго (зависящего от первого) списка не передаются в контроллер? Если первый список не изменять а оставить все как есть, и выбирать доступные значения только из второго списка, то данные передаются нормально, но если изменить пункт в первом списке, то при это меняется второй, и уже после этого он не передает speciality_id из второго списка в контроллер, id в контроллере при этом = 0. Я так понял это из-за динамического изменения второго списка, но как решить эту проблему я не знаю. Второй день ищу, не знаю как исправить

Контроллер:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 [HttpGet]
        public ActionResult Edit(int id)
        {
            Students student = db.Students.Find(id);
            if (student == null)
            {
                return HttpNotFound();
            }
            SelectList depart = new SelectList(db.Departments, "id", "Name", selectedValue: student.department_id);
            ViewBag.departments = depart;
            SelectList special = new SelectList(db.Speciality.Where(c => c.IdDepartment == student.department_id), "id", "Name", selectedValue: student.speciality_id);
            ViewBag.specialitys = special;
            return View(student);
        }
 
        [HttpPost]
        public ActionResult Edit(Students student)
        {
            if (ModelState.IsValid)
            {
                db.Entry(student).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return HttpNotFound();
        }
Часть представления с двумя списками:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<div class="form-group">
            @Html.LabelFor(model => model.department_id, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(model => model.department_id, ViewBag.departments as SelectList, new { id = "dep", @class = "form-control" })
                @Html.ValidationMessageFor(model => model.department_id, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.speciality_id, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(model => model.speciality_id, ViewBag.specialitys as SelectList, new { id = "spec", @class = "form-control" })
                @Html.ValidationMessageFor(model => model.speciality_id, "", new { @class = "text-danger" })
            </div>
        </div>
Скрипт который динамически меняет содержимое второго списка:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@section scripts{
    <script type="text/javascript">
        $(function () {
 
            $('#dep').change(function () {
                // получаем выбранный id
                var id = $(this).val();
                $.ajax({
                    type: 'GET',
                    url: '@Url.Action("GetItems")/' + id,
                    success: function (data) {
 
                        // заменяем содержимое присланным частичным представлением
                        $('#spec').replaceWith(data);
                    }
                });
            });
        });
    </script>
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2019, 23:11
Ответы с готовыми решениями:

jQuery autocomplete не передает параметры в контроллер MVC3
Здраствуйте. Прошу вашей помощи. Пытаюсь прикрутить автозаполнение к текстовому пол в...

Выбор элемента в 1 DropDownListFor должен изменить список во 2 DropDownListFor
Добрый день! Плиз, подскажите. У меня есть два списка, как сделать так, чтобы выбор элемента в...

SM контроллер шины, сетевой контроллер и ethernet контроллер
подскажите где скачать sm контроллер шины, сетевой контроллер и ethernet контроллер для делл...

asus K53S -sm контроллер шины -контроллер универсальный последовательной шины USB и с. контроллер
Люди добрые!! помогите пожалуйста найти драйвера на windows 7 32-b -sm контроллер шины...

Зачем нужен контроллер API если есть контроллер MVC?
Вопрос с собеседования. И так, понятно что API контролер ограничен относительно контроллера MVC. Не...

1
sau
2058 / 1645 / 278
Регистрация: 22.07.2011
Сообщений: 6,266
Завершенные тесты: 1
15.01.2019, 03:03 2
Цитата Сообщение от Progerpro Посмотреть сообщение
Я так понял это из-за динамического изменения второго списка,
это не важно , главное что бы в запросе был соответствующий аргумент со значением , тут нужно смотреть какие данные передаются , каким методом и на какой action. Пользуйтесь снифером http запросов или консолью браузера.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2019, 03:03

DropDownListFor
Здравствуйте. Проблема заключается в следующем, на форме есть несколько dropdownlistfor, которые...

Контроллер SPI. Как выбрать контроллер из списка?
Всем доброго дня Задача получить один из двух контроллеров SPI в системе. SpiConnectionSettings...

Html.DropDownListFor
Можно ли пихануть в метод Html.DropDownListFor цикл foreach (var item in Model)?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru