обновить изображения в Admin controller - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь обновить изображения пользователей, и я думаю о способе дать администраторам возможность обновлять только одно изображение или оба изображения или ни одного для пользователя (изображение профиля и изображение лицензии). Тем не менее, я получаю сообщение об ошибке, что изображения являются нулевыми. Вот моё действие по редактированию в контроллере администратора:

[HttpGet]
        public ActionResult EditDriver(int id)
        {
            DriversTier tier = new DriversTier();
            DriversModel driver = tier.getDriverByID(id);
            WebImage image = new WebImage();
            GetProfileImage(image.driverId);
            GetLicenseImage(image.driverId);


            return View(driver);
        }

        [HttpPost]
        public ActionResult EditDriver(DriversModel driver, IEnumerable<HttpPostedFileBase> images)
        {
            if (images!= null) { 
            var profileImg = images.ElementAt(0);
            var licenseImg = images.ElementAt(1);
                if (profileImg== null && profileImg.ContentLength<0 && licenseImg != null && licenseImg.ContentLength >0)
                {

                    driver.licenseImgType = licenseImg.ContentType;
                    string fileName = licenseImg.FileName;
                    string pattern = @"([^\s]+(\.(?i)(jpg|png|gif|bmp))$)";

                    Regex rgx = new Regex(pattern);

                    //Get the length of the image in bytes and create that array
                    driver.licenseImg = new byte[licenseImg.ContentLength];

                    //fill the array of bytes with the image data
                    licenseImg.InputStream.Read(driver.licenseImg, 0, licenseImg.ContentLength);

                    //Need to do model state checking here, provided some code for that already

                    ModelState.Clear();
                    profileImg = null;


                }else
                {
                    return null;
                }

                //First check the first Image
                if (profileImg != null && profileImg.ContentLength > 0)
            {
                driver.profileImgType = profileImg.ContentType;
                string fileName = profileImg.FileName;

                string pattern = @"([^\s]+(\.(?i)(jpg|png|gif|bmp))$)";

                Regex rgx = new Regex(pattern);

                //Get the length of the image in bytes and create that array
                driver.profileImg = new byte[profileImg.ContentLength];

                //fill the array of bytes with the image data
                profileImg.InputStream.Read(driver.profileImg, 0, profileImg.ContentLength);

                //Need to do model state checking here, provided some code for that already

                ModelState.Clear();

            }

                if (licenseImg==null && profileImg!= null && profileImg.ContentLength > 0)
                {
                    driver.profileImgType = profileImg.ContentType;
                    string fileName = profileImg.FileName;
                    string pattern = @"([^\s]+(\.(?i)(jpg|png|gif|bmp))$)";

                    Regex rgx = new Regex(pattern);

                    //Get the length of the image in bytes and create that array
                    driver.profileImg = new byte[profileImg.ContentLength];

                    //fill the array of bytes with the image data
                    profileImg.InputStream.Read(driver.profileImg, 0, profileImg.ContentLength);

                    //Need to do model state checking here, provided some code for that already

                    ModelState.Clear();
                    licenseImg = null;
                }else
                {
                    return null;
                }
            if (licenseImg != null && licenseImg.ContentLength > 0)
            {
                driver.licenseImgType = licenseImg.ContentType;
                string fileName = licenseImg.FileName;
                string pattern = @"([^\s]+(\.(?i)(jpg|png|gif|bmp))$)";

                Regex rgx = new Regex(pattern);

                //Get the length of the image in bytes and create that array
                driver.licenseImg = new byte[licenseImg.ContentLength];

                //fill the array of bytes with the image data
                licenseImg.InputStream.Read(driver.licenseImg, 0, licenseImg.ContentLength);

                //Need to do model state checking here, provided some code for that already

                ModelState.Clear();

            }
            }
            if (images== null)
            {
                GetProfileImage(driver.driverId);
                GetLicenseImage(driver.driverId);
            }

            DriversTier tier = new DriversTier();
           // WebImage image = tier.getProfileImg(id);

            tier.UpdateDrivers(driver);


            return RedirectToAction("DisplayDrivers/" + driver.driverId);
        }

Как бы разрешить, чтобы изображения были нулевыми или одним из них в этом случае? Заранее спасибо.

1 Ответ

0 голосов
/ 18 марта 2020

Не уверен, что это является причиной вашей проблемы, но похоже, что в вашем коде есть дополнительная закрывающая фигурная скобка:

ModelState.Clear();

            }
            }   <--- extra closing curly brace?
            if (images== null)
...