Я пытаюсь обновить изображения пользователей, и я думаю о способе дать администраторам возможность обновлять только одно изображение или оба изображения или ни одного для пользователя (изображение профиля и изображение лицензии). Тем не менее, я получаю сообщение об ошибке, что изображения являются нулевыми. Вот моё действие по редактированию в контроллере администратора:
[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);
}
Как бы разрешить, чтобы изображения были нулевыми или одним из них в этом случае? Заранее спасибо.