2014-03-27 48 views
0
var vatRate = new List<SelectListItem>(); 
      vatRate.Add(new SelectListItem { Text = "Please select...", Value = "0", Selected = false }); 
      vatRate.Add(new SelectListItem { Text = "0%", Value = "0", Selected = false }); 
      vatRate.Add(new SelectListItem { Text = "5%", Value = "5", Selected = false }); 
      vatRate.Add(new SelectListItem { Text = "20%", Value = "20", Selected = false }); 
      model.VatRate = vatRate; 

這是在我的視圖中初始化將填充我的dopdownlist的列表的代碼。 在我的模型部分是dropdownlist的選定值無法訪問

[Required] 
     [Display(Name = "VAT Rate")] 
     public IEnumerable<SelectListItem> VatRate { get; set; } 
     public IEnumerable<SelectListItem> selectedVatRate { get; set; } 

在我看來,我不喜歡

@Html.DropDownListFor(m => m.selectedVatRate, Model.VatRate, new { @class = "form-control" }) 

然而,當這個頁面被貼我越來越selectedVatRate的count = 0

爲什麼會這樣?

和有沒有辦法只從下拉列表本身接受VALUE

回答

1

這是如何工作的。您對POST操作有什麼參數是在表單上發佈的。例如,下拉菜單將顯示錶示選定值(0,5,20)的單個數字(或字符串)。所以基本上,而不是

public IEnumerable<SelectListItem> selectedVatRate { get; set; } 

你需要

public int selectedVatRate { get; set; } 

爲此得到正確處理。然後在selectedVatRateselectedVatRate將包含選定的值作爲一個整數(例如5在用戶選擇5%選項)。

附註。對於默認列表項和第一個選項0%,您具有相同的值。這看起來不正確,因爲你無法在帖子後面告訴其他人。所以,你可能想默認值是空的:

Text = "Please select...", Value = "" 

,並打開selectedVatRateint?。然後在發佈後,如果選擇默認選項,將獲得null,如果選擇默認選項,則獲得0%。

+0

謝謝解決了問題+1 –