C# 更新管理控制器中的图像

C# 更新管理控制器中的图像,c#,asp.net-mvc-5,C#,Asp.net Mvc 5,我正在尝试更新用户的图像,我正在考虑一种方法,让管理员能够为用户只更新一个图像或两个图像,或者不更新任何图像(配置文件图像和许可证图像)。然而,我得到一个错误,图像是空的。 以下是我在管理控制器中的编辑操作: [HttpGet] public ActionResult EditDriver(int id) { DriversTier tier = new DriversTier(); DriversModel dri

我正在尝试更新用户的图像,我正在考虑一种方法,让管理员能够为用户只更新一个图像或两个图像,或者不更新任何图像(配置文件图像和许可证图像)。然而,我得到一个错误,图像是空的。 以下是我在管理控制器中的编辑操作:

[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);
        }
[HttpGet]
公共操作结果编辑驱动程序(int-id)
{
DriversTier=新的DriversTier();
DriversModel driver=tier.getDriverByID(id);
WebImage image=新的WebImage();
GetProfileImage(image.driverId);
GetLicenseImage(image.driverId);
返回视图(驱动程序);
}
[HttpPost]
公共操作结果编辑驱动程序(驱动程序模型驱动程序,IEnumerable图像)
{
如果(图像!=null){
var profileImg=images.ElementAt(0);
var licenseImg=images.ElementAt(1);
if(profileImg==null&&profileImg.ContentLength0)
{
driver.licenseImgType=licenseImg.ContentType;
字符串文件名=licenseImg.fileName;
字符串模式=@“([^\s]+(\.(?i)(jpg|png|gif|bmp))$)”;
正则表达式rgx=新正则表达式(模式);
//获取图像的长度(以字节为单位),然后创建该数组
driver.licenseImg=新字节[licenseImg.ContentLength];
//用图像数据填充字节数组
licenseImg.InputStream.Read(driver.licenseImg,0,licenseImg.ContentLength);
//需要在这里进行模型状态检查,已经为此提供了一些代码
ModelState.Clear();
profileImg=null;
}否则
{
返回null;
}
//首先检查第一个图像
if(profileImg!=null&&profileImg.ContentLength>0)
{
driver.profileImgType=profileImg.ContentType;
字符串文件名=profileImg.fileName;
字符串模式=@“([^\s]+(\.(?i)(jpg|png|gif|bmp))$)”;
正则表达式rgx=新正则表达式(模式);
//获取图像的长度(以字节为单位),然后创建该数组
driver.profileImg=新字节[profileImg.ContentLength];
//用图像数据填充字节数组
profileImg.InputStream.Read(driver.profileImg,0,profileImg.ContentLength);
//需要在这里进行模型状态检查,已经为此提供了一些代码
ModelState.Clear();
}
if(licenseImg==null&&profileImg!=null&&profileImg.ContentLength>0)
{
driver.profileImgType=profileImg.ContentType;
字符串文件名=profileImg.fileName;
字符串模式=@“([^\s]+(\.(?i)(jpg|png|gif|bmp))$)”;
正则表达式rgx=新正则表达式(模式);
//获取图像的长度(以字节为单位),然后创建该数组
driver.profileImg=新字节[profileImg.ContentLength];
//用图像数据填充字节数组
profileImg.InputStream.Read(driver.profileImg,0,profileImg.ContentLength);
//需要在这里进行模型状态检查,已经为此提供了一些代码
ModelState.Clear();
licenseImg=null;
}否则
{
返回null;
}
if(licenseImg!=null&&licenseImg.ContentLength>0)
{
driver.licenseImgType=licenseImg.ContentType;
字符串文件名=licenseImg.fileName;
字符串模式=@“([^\s]+(\.(?i)(jpg|png|gif|bmp))$)”;
正则表达式rgx=新正则表达式(模式);
//获取图像的长度(以字节为单位),然后创建该数组
driver.licenseImg=新字节[licenseImg.ContentLength];
//用图像数据填充字节数组
licenseImg.InputStream.Read(driver.licenseImg,0,licenseImg.ContentLength);
//需要在这里进行模型状态检查,已经为此提供了一些代码
ModelState.Clear();
}
}
如果(图像==null)
{
GetProfileImage(driver.driverId);
GetLicenseImage(driver.driverId);
}
DriversTier=新的DriversTier();
//WebImage=tier.getProfileImg(id);
层更新驱动程序(驱动程序);
返回重定向操作(“DisplayDrivers/”+driver.driverId);
}
在这种情况下,如何允许图像为null或其中一个?
先谢谢你

不确定它是否导致了您的问题,但代码中似乎有一个额外的右大括号:

ModelState.Clear();

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