如何制作下拉列表

时间:2011-11-30 17:25:34

标签: asp.net-mvc-3 razor drop-down-menu

如何制作下拉列表? [已编辑 - 几乎正常工作的代码]

查看:

<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 个答案:

答案 0 :(得分:1)

稍微改变你的模型,我假设列名根据你的代码改变它们

   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>
...

答案 1 :(得分:0)

你的问题不够明确。
您可以使用telerik combox \ dropdown列表或默认的mvc下拉列表。你可以在google上找到很多例子。

Telerik写这样的东西:

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

有关详细信息,请参阅this Telerik demo