繁体   English   中英

如何在MVC C#中保留旧图像文件

[英]how to remain old image file in mvc c#

我是.net的新手,只需启动我的mvc c#。

我在这里有一个问题..我在插入徽标后尝试更新徽标。 如果我不选择图像文件,徽标位置(仅将位置部分存储在数据库中)为“ null”。

这是控制器:

    public ActionResult Edit(payroll_Company payroll_company)
    {
        if (ModelState.IsValid)
        {
            HttpPostedFileBase txtUploadFile = Request.Files["txtUploadFile"];

            if (txtUploadFile != null && txtUploadFile.ContentLength > 0)
            {
                string logo = txtUploadFile.FileName;
                payroll_company.comp_logo = logo;

                var path = Path.Combine(Server.MapPath("~/Logo/"), logo);
                txtUploadFile.SaveAs(path);
            }
            else
            {
                //payroll_Company comp = db.payroll_Company.Find(payroll_company.comp_id);
                //payroll_company.comp_logo = comp.comp_logo;
            }

            db.Entry(payroll_company).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(payroll_company);
    }

在这里查看:

<div class="form-group">
   <label class="control-label col-md-2">Logo</label>
    <div class="col-md-10">
         <input type="file" name="txtUploadFile" id="txtUploadFile" class="form-control">
    </div>
</div>

如果我不选择图像文件并保留旧图像,该如何编辑公司信息? 希望有人可以帮助我解决这个问题。

提前致谢

var logoPath = Directory.GetFiles(Server.MapPath("~/Logo/")).OrderByDescending(f => File.GetCreationTime(f)).FirstOrDefault();
if (!string.IsNullOrWhiteSpace(logoPath))
{
    payroll_company.comp_logo = Path.GetFileName(logoPath);
}

将代码添加到您的else部分,因为您需要的是最后一个图像文件,这也意味着它比其他图像文件创建得更持久。否则,您需要先从db中读取它,是的,您已经这样做了。

回答后,看来您的payroll_company只是一家财产!,为什么payroll_company保存它? 您只需要跳过the save code ,并the return code没有上传图片时留下the return code

您的异常表示您的对象已经被上下文绑定,因此您必须先将其分离,然后再附加

var _dc = (IObjectContextAdapter)db;
var _oc = _dc.ObjectContext;
var key;// = payroll_company.Key;
ObjectStateEntry ose;
if (_oc.ObjectStateManager.TryGetObjectStateEntry(key, out ose))
{
    var _entity = (payroll_Company)ose.Entity;
    db.Entry(_entity).State = EntityState.Detached;
}
db.payroll_Company.Attach(payroll_company);
db.Entry(payroll_company).State = EntityState.Modified;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM