Получение MVC DropDownList для отображения выбранного элемента - PullRequest
0 голосов
/ 27 января 2012

У меня есть этот код:

@Html.DropDownList("ddlCouponsAppointment",
    Model.Coupons.Select(a => new SelectListItem {
                                    Text = a.Name,
                                    Value = a.CouponId.ToString(),
                                    Selected = (a.CouponId == Model.CouponForAppointmentReminders.CouponId)
                        }), 
    "None",
    new { @class = "normalcell" })

Это работало целую вечность.Теперь он выдает ошибку, о которой мне говорит гугл, потому что мне не разрешено вызывать ToString для сущности, которая отображается на класс (этот класс не изменился, поэтому я не знаю, как он работал раньше).Поэтому я добавил свойство CouponIdStr, которое является строковым представлением.Это не работает (взрывается, потому что свойство не сопоставлено с БД).Я попытался сделать значение равным string.Empty + a.CouponId (поскольку C # объединял бы это как строку).Он взрывается.

Итак, я попробовал это:

@Html.DropDownList("ddlCouponsAppointment",
    new SelectList(Model.Coupons,
        "Name",
        "CouponId",
        Model.CouponForAppointmentReminders.CouponId),
    "None",
    new { @class = "normalcell" })

Это работает, но не показывает выбранный элемент.У кого-нибудь есть предложения?

1 Ответ

1 голос
/ 26 апреля 2012

шаг 1. Создайте ViewModel с выбранным значением

шаг 2. В этой ViewModel есть список элементов, которые вы хотите включить в список выбора

public class ViewModel {      
   public int Selected {get;set;}
   public IEnumerable<Option> Options {get;set;}
}

шаг 3. Впо вашему мнению, используйте метод DisplayFor

Html.DisplayFor(m => m.Selected, new SelectList(Model.Options, "Id", "Display"));

Там, где он есть, при отображении выпадающего списка будет выбрано выбранное значение!

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...