2016-01-21 62 views
0

我正在使用表單的下拉列表。當我創建一個表單時,它工作並且節省很多。但是,當我將它加載到編輯屏幕時,默認情況下不會選擇正確的選項。相反,第一個選項正在被選中。DropDownListFor不在編輯屏幕上選擇正確的值

我在視圖的行中放置了一個斷點,以查看該屬性的id/value是否正確。我只是不確定它是否是視圖中的代碼是錯誤的,或者我是如何通過控制器傳遞的。

我使用DropDownList之前,它工作正常,但出於驗證的目的,我切換到DropDownListFor,我立即遇到了這個問題。

視圖(編輯)

@Html.DropDownListFor(model => model.Item_ID, (SelectList)ViewBag.Item_ID, new { @class = "form-control" }) 

控制器

List<ItemInfo> itemIDItems = dbContext.Items.OrderBy(item => item.Item_Title).ToList<ItemInfo>(); 
ViewBag.Item_ID = new SelectList(itemIDItems, "Item_ID", "Item_Title", object.Item_ID); 

模型(對象,通過EF產生)

public int Obj_ID { get; set; } 
... 
public Nullable<int> Item_ID { get; set; } 
... 
public virtual Items Items { get; set; } 

模型(項目,通過EF生成)

public int Item_ID { get; set; } 
public string Item_Title { get; set; } 
+0

請把你的模型也 –

+0

Viewbag的使用是不是在正確的方向,我認爲你需要添加屬性的模型來表示選擇的值下拉列表 –

+0

並請發佈'ItemInfo'類 –

回答

0

您需要更改ViewBag屬性的名稱,以便它不匹配您綁定到屬性的名稱。例如您的GET方法應該是

var model = // get your existing model 
List<ItemInfo> itemIDItems = dbContext.Items.OrderBy(item => item.Item_Title).ToList<ItemInfo>(); 
ViewBag.ItemList = new SelectList(itemIDItems, "Item_ID", "Item_Title"); 
return View(model); 

注意,SelectList構造函數的第四個參數是不必要的(它是由DropDownListFor()方法忽略不計),因爲屬性的值的結合,以確定哪個選項選擇。

和視圖將是

@Html.DropDownListFor(m => m.Item_ID, (SelectList)ViewBag.ItemList, new { @class = "form-control" }) 

如果Item_ID值的選項之一的值匹配,則該選項將被選擇。