2015-01-28 4 views
1

Я использую следующую функцию для редактирования записей сотрудника.Обновление записей с использованием Entity Framework и ASP.NET MVC5

public async Task<ActionResult> Edit([Bind(Include = "Id,EmployeeId,Name,FatherName,JoiningDate,EndDate,InitialSalary,CurrentSalary,CurrentAddress,PermanentAddress,ContactNumber,EmailId,Gender,DOB,DeptId,DigId,PFNo,BranchCode,Qualification")] Employee employee) 
{ 
     if (ModelState.IsValid) 
     { 
      string fileName = null; 

      if (Request.Files["ImageFileToUpload"]!=null) 
      { 
       ///Saving the file to EmployeeImages folder with unique name. 
       HttpPostedFileBase file = Request.Files["ImageFileToUpload"]; 
       fileName = UploadEmployeeImage(file); 
      } 
      else 
      { 
       ///what condition I need to write here so that if no image selected then it will not update the image field? 
       ///if I am writing  
       fileName = db.Employees.Find(employee.Id).PhotoPath; 
       ///it’s showing error.    
      } 

      employee.PhotoPath = fileName; 

      db.Entry(employee).State = EntityState.Modified; 
      await db.SaveChangesAsync(); 
      return RedirectToAction("Index"); 
     } 

     ViewBag.DeptId = new SelectList(db.Departments, "DeptId", "DeptName", employee.DeptId); 
     ViewBag.DigId = new SelectList(db.Designations, "DegId", "DegName", employee.DigId); 
     ViewBag.BranchCode = new SelectList(db.Branches, "BranchId", "BranchName", employee.BranchCode); 

     return View(employee); 
} 

Я хочу обновить поле изображения, когда я выбираю изображение, иначе изображение сотрудника не должно меняться, но другие записи могут измениться.

Пожалуйста, сообщите, что мне нужно обновить в моем коде.

ответ

2

Наконец-то я получил решение своего вопроса. Следующий код, который я использовал для решения моей проблемы.

[HttpPost] 
    [ValidateAntiForgeryToken] 
    [ActionName("Edit")] 
    public async Task<ActionResult> Edit_Post(int Id) 
    { 
     Employee employee = new Employee(); 
     employee = db.Employees.FindAsync(Id).Result; 
     //if (ModelState.IsValid) 
     //{ 
     string fileName = null; 
     if (Request.Files["ImageFileToUpload"].ContentLength >0) 
     { 
      var file = Request.Files["ImageFileToUpload"]; 
      ///Saving the file to EmployeeImages folder with unique name. 
      if (!string.IsNullOrEmpty(employee.PhotoPath)) 
      { 
       DeleteEmployeeImage(employee.PhotoPath);      
      } 
      fileName = UploadEmployeeImage(file); 
      TryUpdateModel(employee); 
      employee.PhotoPath = fileName; 
     } 
     else 
     { 
      TryUpdateModel(employee, null, null, new string[] { "PhotoPath" }); 
     } 
     if (employee.DigId <= 0) 
     { 
      ModelState.AddModelError("DigId", "Designation is required"); 
     } 
     if (ModelState.IsValid) 
     { 
      db.Entry(employee).State = EntityState.Modified; 
      await db.SaveChangesAsync(); 
      return RedirectToAction("Index"); 
     } 

     ViewBag.DeptIdList = new SelectList(db.Departments, "DeptId", "DeptName", employee.DeptId); 
     ViewBag.DigIdList = new SelectList(db.Designations, "DegId", "DegName", employee.DigId); 
     ViewBag.BranchCodeList = new SelectList(db.Branches, "BranchId", "BranchName", employee.BranchCode); 
     return View(employee); 
    } 
0

Вы можете установить путь, когда вы выбрали изображение.

 if (Request.Files["ImageFileToUpload"]!=null) 
     { 
      ///Saving the file to EmployeeImages folder with unique name. 
      HttpPostedFileBase file = Request.Files["ImageFileToUpload"]; 
      fileName = UploadEmployeeImage(file); 


      employee.PhotoPath = !string.isNullOrWhiteSpace(fileName) ? fileName : employee.PhotoPath ; 


     } 
     //else 
     //{ 
     // else part not required.  
     //} 
      db.Entry(employee).State = EntityState.Modified; 
      await db.SaveChangesAsync(); 
+0

Я сделал то же самое, но вставляя нулевое значение, когда фотографии нет. –

+0

Я обновил ответ. Также обратите внимание, что часть обновления находится внутри условия if. – sudhAnsu63

+0

Это не будет обновлять запись, если имя_файла равно null. То, что я хочу, если имя файла является нулевым, тогда только имя файла не должно меняться, другая запись должна измениться. Другими словами, если имя файла равно null, то только точное имя не должно изменяться. –

Смежные вопросы