Чтобы заполнить раскрывающийся список в представлении, объект типа SelectList
должен быть передан с сервера в представление.Это может быть передано либо в виде ViewBag, либо как часть модели.
Объект SelectList
может быть создан путем заполнения данных из него из базы данных.Это то, что вы хотите сделать.
Вы просто следуете ответам, предложенным в комментариях, и вам также нужно прочитать об этом в MSDN.Вы также должны прочитать о ADO.NET тоже.
Тем не менее, следующий подход, который я предлагаю заполнить раскрывающийся список данными из базы данных.
Ниже приведен код моей хранимой процедуры.
CREATE PROCEDURE GetProductCategories
AS
BEGIN
SELECT CategoryId, CategoryName FROM ProductCategory
END
GO
Ниже приводится мойкласс модели.
public class ProductModel
{
public int Id { get; set; }
public string Name { get; set; }
public int CategoryId { get; set; }
public SelectList Categories { get; set; }
}
Ниже описано, как выполнить хранимую процедуру из кода C # и заполнить Categories selectList в моем классе контроллера.
var connectionString = "connectionString";
var productModel = new ProductModel();
List<SelectListItem> listItems = new List<SelectListItem>();
using (var connection = new SqlConnection(connectionString))
{
using (var command = connection.CreateCommand())
{
command.CommandText = "GetProductCategories";
command.CommandType = CommandType.StoredProcedure;
connection.Open();
var dataReader = command.ExecuteReader();
while (dataReader.Read())
{
var item = new SelectListItem();
item.Text = dataReader["CategoryName"].ToString();
item.Value = dataReader["CategoryId"].ToString();
listItems.Add(item);
}
}
}
productModel.Categories = new SelectList(listItems);