elmbrook Ответов: 1

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

А то....Это было так глупо. Я не понимал, что назвал это результатом, и все еще имел продукт, определенный линией выше. Думаю, мне нужно еще поспать!
Спасибо Дэвид

1 Ответов

Рейтинг:
10

elmbrook

var product = new ProductService().ProductByClubView(clubname.Отделка()).Список();


вар результат продукт = дБ.Продукт
.Где(x => x.clubname == clubname.Отделка())
.Выберите(x => new
{
prodname= x.prodname,
Название = Х.prodname + " - $" + Икс.сумму.Метод toString()
});

Видовой мешок.ProductList = новый список выбора(product, "prodname" , "Name" );