Создание DropDownList от записей базы данных и затем привязка его в представлении формы

У меня есть записи для перечисления, снабженного в таблице базы данных только следующими полями: ID и Name. Я хочу показать значения, сохраненные в этой таблице в DropDownList на форме. Пользователь затем выбирает значение и отправляет форму.

Я нашел способ легко создать DropDownList из перечисления (хотя, вероятно, будет лучше просто заполнить DropDownList с Полями имени всех записей в таблице). Однако я не нашел способ позже обязать DropDownList в представлении формы к целочисленному значению помещать в базу данных (FK - PK) с другими значениями формы.

Можно ли предоставить некоторый код кода, который иллюстрирует, как сделать такую привязку?

ОБНОВЛЕНИЕ: Спасибо за потрясающий ответ. У меня есть еще один вопрос: действительно ли возможно выбрать содержание DropDownList через Ajax и иметь его быть помещенным в DropDownList и в SelectList в ViewModel (с обоими идентификатор и параметры Имени)? Я хочу выборочно выбрать на основе содержимого на входе, который делает пользователь, и я хочу, чтобы ViewModel затем был переполнен теми выбранными данными.

1
задан Community 23 May 2017 в 12:26
поделиться

1 ответ

Как всегда, начнем с определения модели:

public class MyViewModel
{
    public int SelectedValue { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

Затем контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            // TODO: Fetch from the database some enumerable collection 
            // containing Id and Name
            Items = new SelectList(new[]
            {
                new { Id = 1, Name = "item 1" },
                new { Id = 2, Name = "item 2" },
            }, "Id", "Name")
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        // TODO: Do something with model.SelectedValue
        return RedirectToAction("index");
    }
}

и, наконец, строго типизированное представление:

<% using (Html.BeginForm()) { %>
    <%: Html.DropDownListFor(x => x.SelectedValue, Model.Items) %>
    <input type="submit" value="OK" />
<% } %>
2
ответ дан 2 September 2019 в 23:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: