You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC 6:文件输入为空时保留原有数据的实现方案

解决方案

你的核心问题是编辑逻辑错误:当前用Add方法处理编辑操作,这会直接插入新记录而非更新原有数据,且未保留原有图片URL。按以下方式修改控制器方法即可解决:

修改后的控制器编辑方法

//POST
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> UrunDuzenle([FromForm] Urunler obj)
{
    if (ModelState.IsValid)
    {
        // 从数据库获取待编辑的原有产品记录
        var existingUrun = _db.tblUrunler.FirstOrDefault(u => u.UrunID == obj.UrunID);
        if (existingUrun == null)
        {
            return NotFound();
        }

        // 更新除图片外的所有字段
        existingUrun.SKU = obj.SKU;
        existingUrun.UrunAdi = obj.UrunAdi;
        existingUrun.UrunAciklamasi = obj.UrunAciklamasi;
        existingUrun.UrunKategorisi = obj.UrunKategorisi;
        existingUrun.UrunFiyati = obj.UrunFiyati;
        existingUrun.StokDurumu = obj.StokDurumu;
        existingUrun.RenkSecenekleri = obj.RenkSecenekleri;
        existingUrun.BoyutSecenekleri = obj.BoyutSecenekleri;
        existingUrun.Indirim = obj.Indirim;
        existingUrun.TedarikciID = obj.TedarikciID;
        existingUrun.GelisFiyati = obj.GelisFiyati;

        // 处理图片上传逻辑
        if (obj.Gorsel != null)
        {
            // 可选:删除旧图片,避免服务器冗余存储
            if (!string.IsNullOrEmpty(existingUrun.GorselURL))
            {
                var oldImagePath = Path.Combine(_webHostEnvironment.WebRootPath, existingUrun.GorselURL);
                if (System.IO.File.Exists(oldImagePath))
                {
                    System.IO.File.Delete(oldImagePath);
                }
            }

            // 上传新图片并更新URL
            string folder = "images/products/";
            folder += Guid.NewGuid().ToString() + "_" + obj.Gorsel.FileName;
            existingUrun.GorselURL = folder;
            string serverFolder = Path.Combine(_webHostEnvironment.WebRootPath, folder);
            await obj.Gorsel.CopyToAsync(new FileStream(serverFolder, FileMode.Create));
        }
        // 若未上传新图片,直接保留原有GorselURL值

        _db.tblUrunler.Update(existingUrun);
        _db.SaveChanges();
        TempData["success"] = "Ürün düzenleme başarılı";
        return RedirectToAction("Index");
    }
    return View(obj);
}

关键修改说明

  • 替换Add为先查询原有记录再更新的逻辑,确保是编辑操作而非新增
  • 仅在用户上传新图片时才更新GorselURL,未上传时自动保留原有值
  • 可选添加旧图片删除逻辑,清理服务器无用文件

内容的提问来源于stack exchange,提问作者kmr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:24:29