asp.net-mvc - Entity Framework /MVC。如何防止在不选择新图像的情况下更新当前记录时删除保存在数据库中的图像 blob

标签 asp.net-mvc database image entity-framework blob

这是理解我的问题的代码:

Controller :

[HttpPost]
 [ValidateAntiForgeryToken]
 public async Task<ActionResult> Edit([Bind(Include = "Field1,Field2,ect")] ControllerName controllername, HttpPostedFileBase ImageData)
    {
        if (ModelState.IsValid)
        {
            try
            {
                if (ImageData != null && ImageData.ContentLength > 0)
                {
                    using (var reader = new System.IO.BinaryReader(ImageData.InputStream))
                    {
                        controllername.ImageBLOB_FieldDB = reader.ReadBytes(ImageData.ContentLength);    //imageUrl è un tipo varbinary
                    }
                }
                else
                {
                    ImageData = controllername.ImageBLOB_FieldDB;
                }

                db.Entry(controllername).State = EntityState.Modified;
                await db.SaveChangesAsync();
                return RedirectToAction("Index");
            }
            catch (DbEntityValidationException dbEx)
            {
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        Trace.TraceInformation("Property: {0} Error: {1}",
                                                validationError.PropertyName,
                                                validationError.ErrorMessage);
                    }
                }
            }
        }

        return View(controllername);
    }

View :

   <div class="form-group">
            @Html.LabelFor(model => model.ImageBLOB_FieldDB, htmlAttributes:      new { @class = "control-label col-md-2" })
            <div class="col-md-3">
                <label class="col-md-3">Current Image</label>
                @if (Model.ImageBLOB_FieldDB!= null)
            {
                    <img style="height:auto; max-width:200px; width:100%; float: left !important; text-align: left !important; "
                         src='@Url.Action("GetImage", "controllername", new { id = Model.Id })' />
                }
            </div>
            <div class="col-md-3">
                <div id="imageNew" class="hidden">
                    <label class="col-md-3">New Image</label>
                    <div class="col-md-3">
                        <div id="osp">
                            <div id="imagePreview"></div><br>
                        </div>
                    </div>
                </div>
            </div>
            <div class="col-md-3">
                <input type="file" id="ImageData" name="ImageData" onchange="fileCheck(this);" />
        </div>
     </div>

当我保存但不选择新图像时,之前保存的图像将被删除。你有什么主意吗?提前致谢!

在实践中,我不能“保持”之前的案例摄入量变化......我认为这是因为输入“ImageData”未初始化并且它正在消除前一年。

最佳答案

我通过 View 中的这行代码简单地解决了问题:

@Html.HiddenFor(model => model.ImageBLOB_FieldDB);

关于asp.net-mvc - Entity Framework /MVC。如何防止在不选择新图像的情况下更新当前记录时删除保存在数据库中的图像 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33451361/

相关文章:

javascript - Razor View MVC 5 JavaScript - 解析 document.getElementById

mysql - 我想检索与该索引相对应的信息作为字典并且没有一个 : sqlite3

html - 使用 css/html 在悬停时更改图像

asp.net-mvc - 如何使用 IHttpActionResult 设置 header

c# - Azure 中的捆绑不适用于 bootstrap 和 jquery、ASP.NET MVC 5

asp.net - 将 ASP.Net MVC 与经典 ADO.Net 结合使用

database - 三元组数据库的优点和缺点是什么?

javascript - 无法连接到 mlab 上托管的 MongoDB

c# - 如何将 .PNG 图像设置为我的 WPF 表单的 TILED 背景图像?

html - 有什么方法可以找出图像加载到浏览器的位置。来自服务器/浏览器缓存/代理缓存等