这是理解我的问题的代码:
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/