Mvc - несколько полей в selectlist для dropdownlistfor
Привет
Я пытаюсь поместить несколько полей в список выбора, который заполняет выпадающий список.
Я могу заполнить список нормально с помощью приведенного ниже кода
Контроллер
var product = new ProductService().ProductByClubView(clubname.Trim()).ToList(); ViewBag.ProductList = new SelectList(product, "prodname", "prodname"); public IEnumerable<Product> ProductByClubView(string clubname) { var context = new dbS4CEntities(myprop.Connection); var result = from a in context.Product where a.clubname.Trim() == clubname.Trim() orderby a.id descending select a; return result; }
Смотреть
@model S4C.Models.PaymentView2Model @using (Html.BeginForm("Payment2", "Home", FormMethod.Post)) { @Html.AntiForgeryToken() <div class="form-horizontal"> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> Product <div class="col-md-10"> @Html.DropDownListFor(model => model.prodname, (SelectList)ViewBag.ProductList, new { @style = "width:400px; text-align: left", @class = "btn btn-default dropdown-toggle" }) </div> </div> </div> }
При этом выбираются продукты, принадлежащие тому или иному клубу.
Я хочу, чтобы выпадающее окно захватило продукты и сумму.
Что я уже пробовал:
Поэтому я подумал, что приведенный ниже код будет работать.
var product = new ProductService().ProductByClubView(clubname.Trim()).ToList(); var result = db.Product .Where(x => x.clubname == clubname.Trim()) .Select(x => new { prodname= x.prodname, Name = x.prodname + " - $" + x.amount.ToString() }); ViewBag.ProductList = new SelectList(product, "prodname" , "Name" );
Тем не менее, я получаю сообщение об ошибке системы.Веб.HttpException: привязка данных: 'телестанции S4C транслирует.Модели.Product' не содержит свойства с именем 'Name'
Как привязать несколько полей к выпадающему списку?
David_Wimbley
Пара проблем, мы не знаем, как выглядит ваш класс продукта (S4c.Models.Продукт) так что вам нужно будет использовать improve question, чтобы добавить это.
Кроме того, похоже, что вы пытаетесь установить ViewBag.ProductList = новый SelectList(продукт), но вы указываете его для "prodname", "Name". Вам нужно поменяться местами ViewBag.ProductList = new SelectList(product, "prodname" , "Name" );
быть ViewBag.ProductList = new SelectList(result, "prodname" , "Name" );
поскольку коллекция результатов-это единственное, что я вижу с свойством prodname и Name.
elmbrook
А то....Это было так глупо. Я не понимал, что назвал это результатом, и все еще имел продукт, определенный линией выше. Думаю, мне нужно еще поспать!
Спасибо Дэвид