Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
bodynar
170 / 170 / 93
Регистрация: 14.03.2015
Сообщений: 687
Записей в блоге: 1
Завершенные тесты: 3
1

Выпадающий список, ViewBag и модель

16.10.2016, 22:55. Просмотров 478. Ответов 0
Метки нет (Все метки)

Доброго времени суток.

У меня имеется модель
Models
C#
1
2
3
4
5
6
7
8
9
10
11
12
public class Departament
    {
        public int Id { get; set; }
        [Display(Name = "Название отдела")]
        public string Name { get; set; }
        [Display(Name = "Цели отдела")]
        public string Aims { get; set; }
        [Display(Name = "Сотрудники")]
        public virtual ICollection<Employee> Employee { get; set; }
        [Display(Name = "Организация", Description = "Организация, в состав которой входит отдел")]
        public virtual Organization Organization { get; set; }
    }
C#
1
2
3
4
5
6
7
8
public class Organization
    {
        public int Id { get; set; }
        [Display(Name = "Название организации")]
        public string Name { get; set; }
        [Display(Name="Отделы")]
        public virtual ICollection<Departament> Departament { get; set; }
    }

И мне необходимо на странице создания модели Departament заиметь выпадающий список с возможностью выбора уже созданных организаций.
C#
1
2
3
4
5
6
[HttpGet]
        public ActionResult CreateDep()
        {
            ViewBag.Orgs = db.Organizations.ToList();
            return View();
        }
Пока что только такое имею
Кликните здесь для просмотра всего текста
HTML5
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
@model EmployeeCatalog.Models.Departament
 
@{
    ViewBag.Title = "Создание отдела";
}
 
<p>@Html.ActionLink("Назад", "CatalogManage", null, new { @class = "back-button" })</p>
<br />
 
@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()
    
    <div class="form-horizontal">
        <h4>Departament</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.Aims, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Aims, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Aims, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            <text class = "form-group">В составе организации: </text>
            <div class="col-md-10">
                @" dropdownlist here "@
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[HttpPost]
        public ActionResult CreateDep(Departament dep)
        {
            if (ModelState.IsValid)
            {
                var org = db.Organizations.FirstOrDefault(x => x.Id == dep.Organization.Id);
                if (org == null)
                    return new HttpStatusCodeResult(HttpStatusCode.InternalServerError);
 
                else
                {
                    org.Departament.Add(dep);
                    db.Departaments.Add(dep);
                    db.SaveChanges();
                    return RedirectToAction("CatalogManage");
                }
 
            }
            // TODO: Проверить
            return View(dep);
        }


Есть ли какой-нибудь способ организовать выпадающий список, внутри которого будут находится организации и организовать это таким способом, чтобы особо не изменять метод CreateDep?

Знаю, что можно воспользоваться FormCollection, где можно все сразу хранить и потом, в принципе, создавать модель в методе прямо, но правильно ли это?

Добавлено через 24 минуты
Как всегда - спустя минуту после поста темы на форуме в голову приходит решение.

HTML5
1
@Html.DropDownList(".Organization.Id", (IEnumerable<SelectListItem>)ViewBag.Orgs)
И получается, что в метод CreateDep приходит модель, у которой уже имеется свойство Organization.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2016, 22:55
Ответы с готовыми решениями:

Ошибка при записи ViewBag в модель
Пишу на mvc, не могу понять почему возникает ошибка &quot;Object reference not set...

Выпадающий список
Скиньте пожалуйста пример создания строго типизированного выпадающего списка...

Выпадающий список
Создал DropDownList ,в него из базы загружаются значения:(это в контроллере)...

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

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2016, 22:55

Выпадающий список с нестандартным стилем
Здравствуйте. Такая проблема: нужен выпадающий список из таблицы БД. Но при...

Выпадающий список со структурой дерева
Здравствуйте, подскажите как можно реализовать выпадающий список с структурой...

Как заполнить выпадающий список с элементами из БД не используя цикл foreach
Здравствуйте. Скажите, как вывести Выпадающий список с элементами из бд не...


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

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

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