2012-03-14 81 views
2

嗨,大家好,我們如何獲得選定的價值?從Dropdownlist中獲得選定的值

這裏是我的模型

public class PaymentModels 
{ 
    public int CreditCardNumber { get; set; } 
    public List<SelectListItem> CardType { get; set; } 

    public static List<SelectListItem> getCardTypes() 
    { 
     List<SelectListItem> cardType = new List<SelectListItem>(); 
     cardType.Add(new SelectListItem { Text = "American Express"}); 
     cardType.Add(new SelectListItem { Text = "Mastercard" }); 
     cardType.Add(new SelectListItem { Text = "Visa" }); 

     return cardType; 
    } 
} 

這是怎樣的列表可以通過控制器顯示在視圖

ViewData["List"] = PaymentModels.getCardTypes(); 

這裏是我的崗位背法

[HttpPost] 
public ActionResult Payment(PaymentModels pay) 
{ 
    String vr; 
    foreach(var v in pay.CardType) { 
     vr= v.Selected.ToString(); 
    } 

    return View(); 
} 

我的問題是那麼當post事件被調用時,如何從我的cardtype列表中獲取選定的值?

回答

5

您需要將值添加到您的項目,不僅文字:

public int SelectedCardType { get; set; } 

並在視圖:

public static List<SelectListItem> getCardTypes() 
{ 
    List<SelectListItem> cardType = new List<SelectListItem>(); 
    cardType.Add(new SelectListItem { Value = "1", Text = "American Express" }); 
    cardType.Add(new SelectListItem { Value = "2", Text = "Mastercard" }); 
    cardType.Add(new SelectListItem { Value = "3", Text = "Visa" }); 

    return cardType; 
} 

現在,你可以簡單地在您的視圖模型添加屬性

<%= Html.DropDownListFor(
    x => x.SelectedCardType, 
    (IEnumerable<SelectListItem>)ViewData["list"] 
) %> 

並在您的控制器操作中:

[HttpPost] 
public ActionResult Payment(PaymentModels pay) 
{ 
    // pay.SelectedCardType will contain the selected value (1, 2 or 3) 
    ... 
} 

當然,這些值不應該是整數。你可以使用一個字符串屬性,以及:

public static List<SelectListItem> getCardTypes() 
{ 
    List<SelectListItem> cardType = new List<SelectListItem>(); 
    cardType.Add(new SelectListItem { Value = "American Express", Text = "American Express" }); 
    cardType.Add(new SelectListItem { Value = "Mastercard", Text = "Mastercard" }); 
    cardType.Add(new SelectListItem { Value = "Visa", Text = "Visa" }); 

    return cardType; 
} 

和:

public string SelectedCardType { get; set; } 
+0

謝謝你,這真的幫助 – 2012-03-14 13:03:49