Entity framework 4 从数据库填充下拉列表

Entity framework 4 从数据库填充下拉列表,entity-framework-4,asp.net-mvc-3,Entity Framework 4,Asp.net Mvc 3,我有一个MVC3应用程序,在我的实体框架中有两个表 PurchaseTable是PurchaseID、PurchaseDate和ProductID我还有另一个名为Product的表,其中包含ProductID和ProductName。创建新视图以插入新购买如何将ProductID视图中的文本框更改为产品表中产品名称绑定的下拉列表?创建视图模型: public class CreatePurchaseViewModel { public Purchase Purchase { get; se

我有一个MVC3应用程序,在我的实体框架中有两个表


PurchaseTable是PurchaseID、PurchaseDate和ProductID我还有另一个名为Product的表,其中包含ProductID和ProductName。创建新视图以插入新购买如何将ProductID视图中的文本框更改为产品表中产品名称绑定的下拉列表?

创建视图模型:

public class CreatePurchaseViewModel
{
   public Purchase Purchase { get; set; }
   public IEnumerable<SelectListItem> Products { get; set; }
   public int SelectedProductId { get; set; }
}
[HttpGet]
public ActionResult CreateProduct()
{
   var model = new CreatePurchaseViewModel
   {
      Products = repository.FindAllProducts().Select(x =>
              new SelectListItem
              {
                  Text = x.ProductName,
                  Value = x.ProductId
              }
   };

   return View(model);
}
<! -- other code to bind to Purchase, and then: -->

<%= Html.DropDownListFor(x => x.SelectedProductId, Model.Products) %>
然后只需绑定到ViewModel并使用DropDownList for HTML帮助程序:

public class CreatePurchaseViewModel
{
   public Purchase Purchase { get; set; }
   public IEnumerable<SelectListItem> Products { get; set; }
   public int SelectedProductId { get; set; }
}
[HttpGet]
public ActionResult CreateProduct()
{
   var model = new CreatePurchaseViewModel
   {
      Products = repository.FindAllProducts().Select(x =>
              new SelectListItem
              {
                  Text = x.ProductName,
                  Value = x.ProductId
              }
   };

   return View(model);
}
<! -- other code to bind to Purchase, and then: -->

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

x、 SelectedProductId,Model.Products)%%>

然后,当您提交表单时,模型中的
SelectedProductId
值将填充下拉列表中的选定值。

答案比看起来容易。只需创建一个列表:

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);
}

干杯,

嗯,所以我需要创建一个存储库来……伙计,我正在考虑回到asp.net,因为开发应用程序似乎要容易得多。不,你不必使用存储库——使用任何你想从DB获得产品的东西。存储库与MVC无关。很抱歉回复太晚。这似乎是一种享受!感谢您的帮助:)@DiverDan您没有关闭您的
新SelectListItem{}
。我正在寻找一种解决方案,可以在jQuery数据表列中添加一个下拉列表,我的程序中是否可以使用与您的答案类似的解决方案?