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

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

Одна из моих меньших моделей - это Entity, которая выглядит следующим образом:

   public class Entity
{
    //[Required]
    public int ID { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public string Active { get; set; }
}

Вот разметка язык, на котором я пытаюсь привести элементы списка выбора:

<div class="form-group">
                    <label asp-for="SecurityLog.EntityID" class="control-label"></label>
                    <select asp-for="SecurityLog.EntityID" class="form-control switch-disable" asp-items="EntityID">
                        <option value="">--Select Entity--</option>
                    </select>
                    <span asp-validation-for="SecurityLog.EntityID" class="text-danger"></span>
                </div>

На моей странице EditModel я создал Entity viewData и не могу отобразить результаты в разметке. Он называется «EntityID»:

            ViewData["EntityID"] = new SelectList(_context.Entity.Where(a => a.Active == "Y"), "ID", "Name");

Я не могу заставить ViewData показывать что-либо и пытался большую часть дня. Заранее спасибо!

1 Ответ

1 голос
/ 21 января 2020

Вы близки ...

Свойство ViewData EntityID доступно на странице бритвы через ViewBag .

Страница бритвы

<select id="entity" asp-for="SecurityLog.EntityID" class="form-control" asp- 
        items="ViewBag.EntityID">
    <option value="">--Select Entity--</option>
</select>

OnGetAsyn c

ViewData["EntityID"] = new SelectList(_context.Entity.Where(a => a.Active == "Y"), "ID", "Name");
...