在 MVC 4 中创建 ImagesController 时出现错误

发布于 2024-12-19 17:04:03 字数 478 浏览 1 评论 0原文

我正在尝试在 MVC4 中创建一个像这样的 ImagesController

在此处输入图像描述

但我不断收到此错误。

在此处输入图像描述

使用此类为 PeopleController 创建控制器没有问题

public class Person
{
    public int Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public virtual IEnumerable<Affair> Affairs { get; set; }
}

I'm trying to create an ImagesController in MVC4 like this

enter image description here

But I keep getting this error.

enter image description here

Had no problem creating controller for PeopleController using this class

public class Person
{
    public int Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public virtual IEnumerable<Affair> Affairs { get; set; }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烈酒灼喉 2024-12-26 17:04:03

问题出在 Image 类上的 File 属性。因为 EntityFramework 无法理解类型 HttpPostedFileBase 并且无法将其存储在数据库中,并且控制器生成器足够智能来检查这一点。尽管错误消息并没有告诉您问题是什么。要解决此问题,您应该重写属性以使用字节数组:

public class Image
{
    ...
    public byte[] File { get; set; }
}

然后控制器生成应该可以工作。您可以添加自己的图像上传操作,如下所示:

[HttpPost]
public ActionResult Upload(Image image, HttpPostedFileBase file)
{
    if (ModelState.IsValid)
    {
        db.Entry(image).State = EntityState.Modified;
        image.File = new byte[file.ContentLength];
        file.InputStream.Read(image.File, 0, file.ContentLength); 
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(image);
}

The problem is with your File property on the Image class. Because EntityFramework won't understand the type HttpPostedFileBase and can't store it in the DB and the controller generator is smart enough to check this. Altough the error message doesn't tell you what is the problem. To fix this you should rewrite your property to use a byte array:

public class Image
{
    ...
    public byte[] File { get; set; }
}

And then the controller generation should work. And you can add your own image upload action, something like this:

[HttpPost]
public ActionResult Upload(Image image, HttpPostedFileBase file)
{
    if (ModelState.IsValid)
    {
        db.Entry(image).State = EntityState.Modified;
        image.File = new byte[file.ContentLength];
        file.InputStream.Read(image.File, 0, file.ContentLength); 
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(image);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文