Как сделать выпадающий список - PullRequest
0 голосов
/ 30 ноября 2011

Как составить выпадающий список?[Отредактировано - почти рабочий код]

Вид:

<div class="editor-label">
        Firma
    <div class="editor-field">
        @Html.DropDownListFor(x => x.ID_firma, Model.firmaList)
        @Html.ValidationMessageFor(model => model.nazwa)
    </div>

Модель:

 public class produktModel
{
    [Required(ErrorMessage="Proszę podać nazwę.")]
    public string nazwa { get; set; }

    [Required(ErrorMessage = "Proszę podać ilść produktu.")]
    public decimal ilosc { get; set; }

    [Required(ErrorMessage = "Proszę podać jednostkę produktu (np. kg, l, szt.).")]
    public string jednostka { get; set; }

    [Required(ErrorMessage = "Proszę podać cenę produktu.")]
    public decimal cena { get; set; }

    public string ID_firma { get; set; }

    public IEnumerable<SelectListItem> firmaList { get; set; }
}

Контроллер:

 public ActionResult dodaj()
    {

        var firma = baza.Firmas;
        var model = new produktModel
        {
            firmaList = firma.AsEnumerable().Select(x => new SelectListItem
            {
                Value = x.ID_firma.ToString(),
                Text = x.nazwa
            })
        };

        return View(model);
    }

    [HttpPost]
    public ActionResult dodaj(produktModel model)
    {

        Produkt prod = new Produkt();

        prod.nazwa = model.nazwa;
        prod.ilosc = model.ilosc;
        prod.jednostka = model.jednostka;
        prod.cena = model.cena;
         prod.ID_firma = model.ID_firma;  


        baza.Produkts.InsertOnSubmit(prod);
        baza.SubmitChanges();

        return RedirectToAction("zarzadzaj_produktami", "Produkt");
    }

Почти работает... У меня есть только одна проблема (я надеюсь) ... Значение - это строка, и я сохраняю его значение в базе данных ... (сейчас не знаю, как это записать ...)

prod.ID_firma = model.ID_firma;

prod.ID_firma - это int.model.ID_firma - это значение, которое является строкой.Итак, у меня есть ошибка:

Ошибка 1 Не удается неявно преобразовать тип 'string' в 'int?'

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

немного измените модель, я предположил, что имена столбцов меняют их в соответствии с вашим кодом

   public class produktModel
        {
            [Required]
            public string name { get; set; }
            public decimal price { get; set; }
            [Required]
            public int companyID {get; set;}
            public List<Company> compList {get; set;} 
        }

    public class Company{
        public int CompanyID {get;set;}
        public string CompanyName {get;set;}
       }

ActionResult должен выглядеть как

public ActionResult add()
        {
            produktModel model = new produktModel();
            model.compList= (from b in base.Companies
                               select new Company{
                                 CompanyID = b.CompanyID,
                                 CompanyName = b.CompanyName
                                }).ToList();

            return View(model);
        }

в вашем (строго типизированном) виде

@model produktModel

....
<div class="editor-label">
            Company
 <div class="editor-field">
            @Html.DropDownListFor(model => model.companyID,
                                new  SelectListItem(model.compList,
                                           "CompanyID ",
                                           "CompanyName "))
            @Html.ValidationMessageFor(model => model.company_name)
        </div>
...
0 голосов
/ 30 ноября 2011

Ваш вопрос недостаточно ясен.
В любом случае вы можете использовать выпадающий список telerik combox \ или выпадающий список mvc по умолчанию. Вы можете найти множество примеров в Google для этого.

С Telerik напишите что-то вроде этого:

@(Html.Telerik().ComboBox()
            .Name("ComboBox")
            .BindTo(new SelectList("CompanyID", "CompanyName")))

см. эту демонстрацию Telerik для получения дополнительной информации.

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