我在我的實體框架中有一個mvc 3應用程序和2個表。從db填充下拉列表
purchaseID爲PurchaseID,PurchaseDate & ProductID我有另一個名爲Product的表,其中包含ProductID和ProductName。創建一個插入新購買的新視圖如何將ProductID中的文本框更改爲產品表中ProductName的下拉框?
我在我的實體框架中有一個mvc 3應用程序和2個表。從db填充下拉列表
purchaseID爲PurchaseID,PurchaseDate & ProductID我有另一個名爲Product的表,其中包含ProductID和ProductName。創建一個插入新購買的新視圖如何將ProductID中的文本框更改爲產品表中ProductName的下拉框?
創建一個視圖模型:
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);
}
然後,只需綁定到視圖模型,並使用DropDownListFor HTML助手:
<! -- other code to bind to Purchase, and then: -->
<%= Html.DropDownListFor(x => 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,因爲它似乎更容易開發應用程序 – 2011-01-28 11:24:17
不,您不必使用存儲庫 - 使用任何你想從數據庫獲取產品的東西。版本庫與MVC無關。 – RPM1984 2011-01-28 11:49:17