首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.MVC图像编辑

ASP.MVC图像编辑
EN

Stack Overflow用户
提问于 2019-09-19 07:50:37
回答 2查看 84关注 0票数 0
代码语言:javascript
复制
    public ActionResult Edit([Bind(Include = "id,category,title,image,active,ImageFile")] page_image page_image)
    {
        if (ModelState.IsValid)
        {
            if (page_image.ImageFile != null)
            {
                string fileName = Path.GetFileNameWithoutExtension(page_image.ImageFile.FileName);
                string extension = Path.GetExtension(page_image.ImageFile.FileName);
                fileName = fileName + DateTime.Now.ToString("yymmssff") + extension;
                page_image.image = "/Uploads/page_images/" + fileName;

                fileName = Path.Combine(Server.MapPath("/Uploads/page_images"), fileName);
                page_image.ImageFile.SaveAs(fileName);
            }

            db.Entry(page_image).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        ViewBag.category = new SelectList(db.page, "id", "title", page_image.category);
        return View(page_image);
    }

在这里,我可以编辑用户,但没有显示上一个图像,所以如果我单击submit而不加载一个新的图像,它将删除前一个图像。我要做的是编辑视图,我想让它显示图像的名称。你能带我去正确的方向吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-19 08:11:03

如果page_image.Imagenull,则获取先前的图像并分配

代码语言:javascript
复制
 if (page_image.ImageFile != null)
 {
       string fileName = Path.GetFileNameWithoutExtension(page_image.ImageFile.FileName);
       string extension = Path.GetExtension(page_image.ImageFile.FileName);
       fileName = fileName + DateTime.Now.ToString("yymmssff") + extension;
       page_image.image = "/Uploads/page_images/" + fileName;

       fileName = Path.Combine(Server.MapPath("/Uploads/page_images"), fileName);
       page_image.ImageFile.SaveAs(fileName);

 } else {
    // get existing image from database 
     var data = db.page_image.AsNoTracking().Where(b => b.id == page_image.id).FirstOrDefault();
     //assign to existing image
     page_image.image = data.image ;

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

更新:由于dbcontext的相同实例,错误在这里抛出。您可以创建新实例以获取或执行以下操作。

代码语言:javascript
复制
var data = db.page_image.AsNoTracking().Where(b => b.id == page_image.id).FirstOrDefault();

代码语言:javascript
复制
using (var db2 = new YourDbContext())
{
    var data = db2.page_image.Where(b => b.id == page_image.id).FirstOrDefault();
}
票数 0
EN

Stack Overflow用户

发布于 2019-09-19 08:19:27

问题是,因为您将视图模型保存到数据库中,所以您应该有一个DTO。无论如何,再次尝试从DB获取ImageFile,以防它提交了null。

代码语言:javascript
复制
if(page_image.ImageFile != null)
{
    //  your uploading logic
}
else
{
    var oldData = db.Set<page_image>().Where(x => x.id == page_image.id).FirstOrDefault();
    page_image.ImageFile = oldData.ImageFile;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58006230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档