ammu11 Ответов: 0

Почему изображение удаляется при обновлении в MVC


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

контроллер
public async Task<ActionResult> StudentList(Student student, HttpPostedFileBase Img)
       {
           if (Img != null)
           {
               var imageTypes = new string[]{
                                  "image/gif",
                                  "image/jpeg",
                                  "image/pjpeg",
                                  "image/png"
                               };
               if (Img.FileName == null || Img.ContentLength == 0)
               {
                   ModelState.AddModelError("Images", "This field is required");
               }
               else if (!imageTypes.Contains(Img.ContentType))
               {
                   ModelState.AddModelError("Images", "Please choose either GIF, JPG or PNG image.");
               }
               if (ModelState.IsValid)
               {
                   if (Img != null)
                   {
                       var fileName = Path.GetFileName(Img.FileName);
                       var directoryToSave = Server.MapPath(Url.Content("~/Images"));
                       var pathToSave = Path.Combine(directoryToSave, fileName);
                       Img.SaveAs(pathToSave);
                       student.Images = fileName;
                   }
                   db.Entry(student).State = EntityState.Modified;
                   await db.SaveChangesAsync();
                   return RedirectToAction("StudentList", "Students", new { @id = 2 });
               }
           }
           else
           {
               if(ModelState.IsValid)
               {
                   db.Entry(student).State = EntityState.Modified;
                   await db.SaveChangesAsync();
                   return RedirectToAction("StudentList", "Students", new { @id = 2 });
               }
           }
           return View(student);
       }


вид

<div class="form-group">
            @Html.LabelFor(model => model.Images, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <div class="editor-field">
                    @Html.DisplayTextFor(model => model.Images)
                    @Html.TextBoxFor(m => m.Images, new { type = "file" })
                </div>
            </div>
            @Html.ValidationMessageFor(model => model.Images, "", new { @class = "text-danger" })
        </div>

Я не знаю, почему это происходит, когда я просто нажимаю кнопку Сохранить, Изображение удаляется. В
@Html.DisplayTextFor(model => model.Images)
поле он получит имя изображения, но оно не передается методу httpPost StudentList action method. почему это происходит ?? как я могу изменить текст, не удаляя изображение??
кто-нибудь может помочь мне найти решение ?

Что я уже пробовал:

Я искал много раз, но не могу исправить эту ошибку.

F-ES Sitecore

Если под "удаленным" вы подразумеваете, что поле загрузки изображения очищено, то это по замыслу, это проблема безопасности. Вам нужно будет либо реализовать проверку на стороне клиента, чтобы форма не могла быть отправлена до тех пор, пока поля не будут в порядке (хотя вам все еще нужна проверка на стороне сервера, если вы используете платформу проверки MVC, то она может делать и то, и другое), либо разделить ваш процесс на два, чтобы люди сначала предоставляли основные сведения, а затем загружали изображение.

0 Ответов