MVC 5 Выберите элемент списка с отображением текущего выбора

Мои извинения, я не буду использовать технические термины, чтобы объяснить мою проблему, я попробую базовый английский - я хочу, чтобы мой список выбора отображался в моем представлении с уже выбранным текущим выбранным дилером (более подробная информация ниже). Заранее спасибо.

У меня есть продукт, который хранится в собственной таблице данных, который продается дилерами, и в отношении продукта я храню номер дилера, который его продал.

Я получаю номер дилера из таблицы данных дилера.

На веб-странице я создаю раскрывающийся список, когда продукт продается, и пользователь выбирает имя дилера, который его продал. Мне удалось создать список, который показывает имена, но когда выбранный сохраняет идентификатор в таблице продуктов дилера, это работает нормально.

Я просто изо всех сил пытаюсь отредактировать продукт, чтобы появился список выбора и показывался текущий выбранный дилер, он всегда появляется с первым дилером в списке. Я искал, но из-за того, что я получил этот код вместе с другими сообщениями SO, я не могу найти сообщение, которое работает с моим примером кода.

Будем очень признательны за любые отзывы/помощь/предложения.

Контроллер

            // Create drop down list of dealer names to allow users to select from easily identifiable list rather than find number first before coming to the page.
        var list = db.Dealers.OrderBy(r => r.Name).ToList().Select(rr =>
        new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList(); // Require to code and set value based on current selected name.

        ViewBag.DealerName = list;

Код бритвы:

            <div class="form-group">
            @Html.LabelFor(model => model.Dealer_ID, htmlAttributes: new { @class = "control-label col-md-4" })
            <div class="col-md-8">
                @*
                @* Custom display for drop down list which shows Dealer Name instead of numeric ID Value *@
                @Html.DropDownListFor(m => m.Dealer_ID, (IEnumerable<SelectListItem>)ViewBag.DealerName, new { htmlAttributes = new { @class = "form-control" } })
            </div>
        </div>

person Andy Donegan    schedule 13.01.2016    source источник


Ответы (1)


Вы сохраняете model.Name в Value из SelectListItem, но это должно быть свойство, соответствующее значению model.Dealer_ID

rr.ID or rr.Dealer_ID:

var list = db.Dealers.OrderBy(r => r.Name).ToList().Select(rr =>
        new SelectListItem { Value = rr.Dealer_ID.ToString(), Text = rr.Name }).ToList();
person Gene R    schedule 13.01.2016
comment
Привет, @Gene R, спасибо за быстрый ответ, к сожалению, если я не правильно понял ваш ответ, возможно, вы неправильно поняли мой плохо сформулированный вопрос. Мой список работает отлично, но когда я перехожу на страницу, список выбора всегда выбирает первого дилера в списке. Я хочу, чтобы он показывал выбранного в данный момент дилера, который продал караван. - person Andy Donegan; 13.01.2016
comment
@AndyDonegan В вашем списке нет значений для Dealer_ID, которые вы связываете в раскрывающемся списке Html.DropDownListFor(m => m.Dealer_ID... - person Gene R; 13.01.2016
comment
Большое вам спасибо, я попробовал и протестировал сейчас, и да, вы абсолютно правы, теперь отображается имя выбранного в данный момент дилера. Еще раз спасибо за ваше терпение в том, чтобы исправить меня во второй раз! - person Andy Donegan; 13.01.2016