首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用图片编辑页面上的详细信息

用图片编辑页面上的详细信息
EN

Stack Overflow用户
提问于 2014-12-10 11:19:19
回答 2查看 39关注 0票数 0

我有一页图片和其他几个字段。上传图片工作fine.If用户想要编辑和放置不同的图片,这也很好。当用户编辑记录中的不同字段(图像字段除外)时,会发生此问题。保存后,图像消失。

这是我的控制器

代码语言:javascript
运行
复制
public ActionResult Edit([Bind(Include = "GlobalMaterialId,Length,Picture")] MetalStock metalStock, HttpPostedFileBase ImageFile)
    {
        if (ModelState.IsValid)
        {

            if (ImageFile != null)
            {
                string pic = System.IO.Path.GetFileName(ImageFile.FileName);

                metalStock.ImagePath = pic;

                using (MemoryStream ms = new MemoryStream())
                {
                    ImageFile.InputStream.CopyTo(ms);
                    metalStock.Picture = ms.GetBuffer();

                }

            }                             

            m_db.Entry(metalStock).State = EntityState.Modified;           

            m_db.SaveChanges();

           return RedirectToAction("Index");
        }

        return View(metalStock);
    }

以下是上传视图的图片

<输入name="ImageFile“类型=‘file’/>

我知道,当我编辑一个字段并保存时,传递给控制器的ImageFile是空的,这就产生了问题。我尝试过其他一些事情,比如尝试从记录中获取图片并将其重新分配给对象等。请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-10 11:52:44

我想您的控制器会死掉,因为它寻找一个HttpPostedFile,而没有得到一个。您可以在操作的声明中使其为空。

代码语言:javascript
运行
复制
public ActionResult Edit([Bind(Include = "GlobalMaterialId,Length,Picture")] MetalStock metalStock, HttpPostedFileBase ImageFile = null)

或者根本不要在控制器中声明它,并从请求中获取它:

代码语言:javascript
运行
复制
var Image = Request.Files["ImageFile"]
票数 0
EN

Stack Overflow用户

发布于 2014-12-10 12:21:01

您可以将现有的图像文件作为base64字符串存储在隐藏字段中,并在post操作检查中查看HttpPostedFileBase是否为null (他们没有选择不同的图像)。如果是,则将base64字符串转换回字节数组,并将其分配给metalStock.Picture属性。

过去我就是这样处理这种情况的。您需要在视图模型上创建另一个属性来保存这个base64字符串。假设您的视图不是直接绑定到您的实体,而是一个视图模型,这是有益的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27399693

复制
相关文章

相似问题

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