繁体   English   中英

我可以使用ArrayList作为ASP.NET MVC中的SelectList吗

[英]Can I use an ArrayList as a SelectList in ASP.NET MVC

我将在学习中创建一个ASP.NET Web应用程序。

目前,我正在创建“ 添加产品”部分。 我已将一些图像添加到图像文件夹,并希望将这些图像名称添加到下拉列表中。 这是我的教程提供的代码:

编辑:正如下面指出的,不再推荐使用ArrayList。 这就是为什么我尝试使用此方法的部分原因。

    public void GetImages()
    {
        try
        {
            //get all filepaths
            string[] images = Directory.GetFiles(Server.MapPath("~/Images/Products/"));

            //get all filenames and add them to an arraylist.

            ArrayList imagelist = new ArrayList();
            foreach (string image in images)
            {
                string imagename = image.Substring(image.LastIndexOf(@"\", StringComparison.Ordinal) + 1);
                imagelist.Add(imagename);
            }

         //Set the arrayList as the dropdownview's datasource and refresh
        ddlImage.DataSource = imageList;
        ddlImage.AppendDataBoundItems = true;
        ddlImage.DataBind();

    }

然后将其用于页面加载。

当我使用Web表单创建它时,它可以很好地工作。 但是,我想为此项目使用@Html.DropDownList操作链接。 当使用脚手架连接数据库时,就可以很好地创建和填充这些下拉列表,并且我可以看到为视图生成SelectList的位置,即:

    // GET: Products/Create
    public ActionResult Create()
    {
        ViewBag.TypeId = new SelectList(db.ProductTypes, "Id", "Name");
        return View();
    }

我只是不确定如何将本教程示例转换为SelecList初始化程序所要求的IEnumerable。 我得到的最接近的是:

     List<SelectListItem> imagelist = new List<SelectListItem>();
            foreach (string image in images)
            {
                string imagename = image.Substring(image.LastIndexOf(@"\", StringComparison.Ordinal) + 1);
                imagelist.Add(new SelectListItem() { Text = imagename });
            }

             IEnumerable<string> imager = imagelist as IEnumerable<string>;

但这似乎不对。

编辑:如下所示,我需要将值添加到新的SelectListItem

     imagelist.Add(new SelectListItem() { Text = imagename, Value = "Id" });

这似乎更好。 尽管我不确定是否需要创建“ imager”,但imageList作为IEnumerable。 SelectList是否已可枚举?

补充问题:另外,如何将这个新列表添加到ViewBag

    ViewBag.TypeId = new SelectList(db.ProductTypes, "Id", "Name");
    ViewBag.TypeId = new SelectList()
    return View();     

目前我的问题是它在GetImages方法中,并且我不确定如何访问它。 我认为答案是超级基本的,但是我对此很陌生。

任何建议将不胜感激!

再次感谢。

//Create a new select list. the variable Imagelist will take on whatever type SelectList.

   var Imagelist = new SelectList(
    new List<SelectListItem>
    {
        new SelectListItem { Text = imagename, Value = "Id"},
        new SelectListItem { Text = imagename2, Value = "Id2"},

    }, "Value" , "Text");


    //You can now use this viewbag in your view however you want.
      ViewBag.Image = Imagelist.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM