Создание DropDownList из записей базы данных, а затем связывание его при отправке формы - PullRequest
1 голос
/ 04 июля 2010

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

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

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

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

1 Ответ

2 голосов
/ 04 июля 2010

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

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" />
<% } %>
...