2012-03-14 48 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