2014-09-18 62 views
3

默認選定的項目我有一個DropDownListFor綁定到模型成員以及可供選擇的項目列表。綁定到這個成員的作品,但我似乎無法弄清楚是如何顯示頁面加載時模型的當前值。DropDownListFor從模型

查看

@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.statuses) 

控制

List<SelectListItem> statuses = new List<SelectListItem>(); 
statuses.Add(new SelectListItem { Text = "Approved", Value = "Approved" }); 
statuses.Add(new SelectListItem { Text = "Declined", Value = "Declined" }); 
statuses.Add(new SelectListItem { Text = "Pending", Value = "Pending" }); 
ViewBag.ClaimStatus = statuses; 

添加optionLabel參數不工作,並返回一個空值,並在SelectListItem傳遞作爲optionLabel參數也不起作用。

@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.methodofpayment, model.MethodOfPayment) 

我希望頁面提交相同的值,如果他們不改變列表項。

編輯︰
謝謝你們,它一定是名稱衝突。 我搞砸了問我的問題有點,因爲我有兩個下拉列表,我必須複製錯誤的。

改變的代碼:
控制器:

List<SelectListItem> statuses = new List<SelectListItem>(); 
statuses.Add(new SelectListItem { Text = "Approved", Value = "Approved" }); 
statuses.Add(new SelectListItem { Text = "Declined", Value = "Declined" }); 
statuses.Add(new SelectListItem { Text = "Pending", Value = "Pending" }); 
ViewBag.ClaimStatuses = statuses; 

查看:

@Html.DropDownListFor(model => model.ClaimStatus, (List<SelectListItem>)ViewBag.ClaimStatuses) 

它製造多和它的作品。

+0

你的'MethodofPayment設定值相同'在模型綁定到視圖之前的模型中,還是null? – 2014-09-18 21:02:23

回答

3

有時可能會發生這樣的情況,您可能已經爲不同的控件/變量使用了相同的名稱,並且它們可能會相互衝突。

在你的情況下,模型屬性名稱MethodofPayment和您的ViewBag名稱methodofpayment導致衝突我猜。

嘗試將您的ViewBag名稱更改爲像ViewBag.paymentmode之類的東西並嘗試。

@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.paymentmode) 
0

請確保您有其名稱爲「model.MethodofPayment」只是一個控制。

@Html.DropDownListFor(model => model.MethodofPayment, (List<SelectListItem>)ViewBag.methodofpayment) 
在您的文章的方法

使用您的視圖中的名稱

[HttpPost] 
    public ActionResult yourAction(classname ClassModel) 
    { 
    } 

肯定的是,名爲「ClassModel」在視圖中