Entity framework 4 从数据库填充下拉列表
我有一个MVC3应用程序,在我的实体框架中有两个表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
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数据表列中添加一个下拉列表,我的程序中是否可以使用与您的答案类似的解决方案?