MVC .NET Как лучше всего обновить модель с загрузкой файла - PullRequest
2 голосов
/ 03 апреля 2011

Использование EF4 Codefirst RC и MVC .NET

У меня есть строго типизированное представление, которое я использую для операций вставки / обновления в моей модели. Одним из полей является файл / изображение, которое загружается. Я использую код ниже, чтобы сделать это. Проблема заключается в том, что при редактировании формы во второй раз, если пользователь не выбирает файл, для файла каждый раз устанавливается значение NULL.

Какие разные пути к людям приходят сюда.

Я могу

  • Не хранить изображение в БД, но в файловой системе (невозможно, так как эти данные также поступают из внешнего API)
  • Изменить мой вид, чтобы иметь отдельную форму для редактирования изображений?

Я уже прочитал EF4 Code First: как обновить только определенные поля http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/81a0ee7d-bbe1-416c-9d84-7a30e04730fa/

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

 public ActionResult Edit(CruiselineEditModel cruiseline, HttpPostedFileBase LogoData)
    {
        if (ModelState.IsValid)
        {
            var cl = Mapper.Map<CruiselineEditModel, Cruiseline>(cruiseline);
            Cruiseline orgObj = _cl.GetById(cruiseline.Id);

            UpdateModel<Cruiseline>(orgObj, "", null, new string[] { "LogoData" });
            if (LogoData != null && LogoData.ContentLength > 0)
            {
                 byte[] imgBinaryData = new byte[LogoData.ContentLength];
                 int readresult = LogoData.InputStream.Read(imgBinaryData, 0, LogoData.ContentLength);
                 orgObj.LogoData = imgBinaryData;
            }
            _cl.Save();                  

        }
        return View(cruiseline);
    }

1 Ответ

1 голос
/ 03 апреля 2011

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

...