Заполните выпадающий список из БД - PullRequest
3 голосов
/ 28 января 2011

У меня есть приложение MVC 3 с 2 таблицами в моей структуре сущностей.

PurchaseTable, который был PurchaseID, PurchaseDate & ProductID. У меня есть другая таблица с именем Product, которая содержит ProductID и ProductName.создание нового представления для вставки новой покупки. Как изменить текстовое поле в представлении, чтобы ProductID был раскрывающимся списком, указанным ProductName в таблице Product?

Ответы [ 2 ]

6 голосов
/ 28 января 2011

Создание ViewModel:

public class CreatePurchaseViewModel
{
   public Purchase Purchase { get; set; }
   public IEnumerable<SelectListItem> Products { get; set; }
   public int SelectedProductId { get; set; }
}

Настройка вида с помощью ViewModel:

[HttpGet]
public ActionResult CreateProduct()
{
   var model = new CreatePurchaseViewModel
   {
      Products = repository.FindAllProducts().Select(x =>
              new SelectListItem
              {
                  Text = x.ProductName,
                  Value = x.ProductId
              }
   };

   return View(model);
}

Затем просто привязатьв ViewModel и используйте DropDownListFor HTML Helper:

<! -- other code to bind to Purchase, and then: -->

<%= Html.DropDownListFor(x => x.SelectedProductId, Model.Products) %>

Затем при отправке формы значение SelectedProductId в модели будет заполнено выбранным значением из раскрывающегося списка.

3 голосов
/ 04 марта 2011

Ответ проще, чем кажется. Просто создайте список:

myDropDown = new SelectList(db.Products, "Product_ID", "ProductName", idSelected);

Первый параметр - это ваша таблица («Продукты» из модели сущности), второй - это «id», который будет возвращен при выборе из списка (т. Е. SelectedValue), третий - это «текст», который будет отображается в списке, и последний параметр является выбранным в данный момент элементом.

Если ваша модель называется MyTablesDB, то:

MyTablesDB db = new MyTablesDB();

Например:

public SelectList GetPullDown(object idSelected) {
    myTablesDB myDB = new MyTablesDB();
    return new SelectList(myDB.Products, "Product_ID", "Product_Name", idSelected);
}

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...