Получить выбранное значение из выпадающего списка - PullRequest
2 голосов
/ 14 марта 2012

Привет, ребята, как можно получить выбранное значение?

Вот моя модель

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?

1 Ответ

5 голосов
/ 14 марта 2012

Вам нужно добавить значения к вашим элементам, а не только текст:

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; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...