Раскрывающийся список с указанием имени класса, а не значений - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь заполнить выпадающий список из таблицы базы данных и использую этот код в моем контроллере

model.EngineerNameList = new List<Engineers>();
foreach (string Engineer in allData.Select(x => x.EngineerName).Distinct().ToList())
{
    model.EngineerNameList.Add(new Engineers() { EngineerName = Engineer });
}

Это возвращает правильное количество элементов в моем раскрывающемся списке, но я получаю имякласса, как определено в моем классе здесь

public partial class Engineers
{
    public int ID { get; set; }

    [StringLength(100)]
    public string EngineerName { get; set; }
}

Я отображаю в моем представлении, используя следующее

 <div class="form-group">
    <label for="Engineer">Select Engineer:</label>
    <select id="Name" name="Name" onchange="this.form.submit()">
        @if (Model.EngineerNameList != null)
        {
            foreach (var Title in Model.EngineerNameList)
            {
            <option value="@Title" >@Title </option>
            }
        }
        </select>
</div>

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

enter image description here

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Вы также можете использовать этот тип в MVC с помощниками для бритвы

 <select id="Name" name="Name" onchange="this.form.submit()">
    @if (Model.EngineerNameList != null)
    {
        foreach (var Title in Model.EngineerNameList)
        {
       <option value="@Title.EngineerName">@Title.EngineerName</option>
        }
    }
    </select>

Можно заменить на

@Html.DropDownListFor("EngineerName", Model.EngineerNameList.Select(Title => new SelectListItem { Text = Title.EngineerName, Value = Title.EngineerName.ToString() }))

Он также будет отображать тот же HTML-код послерендеринга ...

0 голосов
/ 29 мая 2018

EngineerNameList представляет собой коллекцию модели Engineers, поэтому при ее повторении вы получите объект Engineers.Вот почему вы видите ToString() представление вашей модели в выпадающем списке.

Чтобы отобразить соответствующее имя инженера, обновите код как

<option value="@Title.EngineerName">@Title.EngineerName</option>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...