如何在 mvc c# 中保留旧图像文件
how to remain old image file in mvc c#
我是 .net 新手.. 刚开始我的 mvc c#..
我这里有问题..我正在尝试在插入徽标后更新它。如果我没有 select 图像文件,徽标位置(我仅将位置部分存储在数据库中)来自 "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>
如果我没有select图像文件并保留旧图像,我该如何编辑公司信息?希望有人能帮我解决这个问题..
提前致谢
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
部分,因为你需要的是最后一个图像文件,这也意味着它比其他图像创建得晚files.Otherwise,你需要从数据库中读取它首先,是的,你已经做到了。
经过你的回答,你的payroll_company
好像只有一个属性!,那你为什么要保存呢?你只需要跳过 the save 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;
我是 .net 新手.. 刚开始我的 mvc c#..
我这里有问题..我正在尝试在插入徽标后更新它。如果我没有 select 图像文件,徽标位置(我仅将位置部分存储在数据库中)来自 "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>
如果我没有select图像文件并保留旧图像,我该如何编辑公司信息?希望有人能帮我解决这个问题..
提前致谢
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
部分,因为你需要的是最后一个图像文件,这也意味着它比其他图像创建得晚files.Otherwise,你需要从数据库中读取它首先,是的,你已经做到了。
经过你的回答,你的payroll_company
好像只有一个属性!,那你为什么要保存呢?你只需要跳过 the save 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;