大家好,怎样才能获得选定的价值?
这是我的模特
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列表中获取所选值?
答案 0 :(得分:5)
您需要为商品添加值,而不仅仅是文字:
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;
}
现在您可以在视图模型上添加一个属性:
public int SelectedCardType { get; set; }
在视图中:
<%= 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; }