Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Asp.net MVC 5应用程序中上载文件_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Httppostedfilebase - Fatal编程技术网

C# 如何在Asp.net MVC 5应用程序中上载文件

C# 如何在Asp.net MVC 5应用程序中上载文件,c#,asp.net,asp.net-mvc,asp.net-mvc-4,httppostedfilebase,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Httppostedfilebase,我正在尝试在我的应用程序中上载文件。我在模型中使用了HttpPostedFileBase和byte[]数组,但不知道为什么在运行应用程序时会显示此错误。下面我还上传了运行应用程序时显示的错误的图像 显示的错误是: 在模型生成过程中检测到一个或多个验证错误: AdSite.Models.HttpPostedFileBase::EntityType“HttpPostedFileBase”未定义键。定义此EntityType的键。 HttpPostedFileBase:EntityType:Entit

我正在尝试在我的应用程序中上载文件。我在模型中使用了
HttpPostedFileBase
byte[]
数组,但不知道为什么在运行应用程序时会显示此错误。下面我还上传了运行应用程序时显示的错误的
图像

显示的错误是:

在模型生成过程中检测到一个或多个验证错误:

AdSite.Models.HttpPostedFileBase::
EntityType“HttpPostedFileBase”未定义键。定义此EntityType的键。
HttpPostedFileBase:EntityType:EntitySet“HttpPostedFileBase”基于未定义键的类型“HttpPostedFileBase”`

我的模型:

public class Album
{
    [Key]
    public int Id { get; set; }
    public string ProductTitle { get; set; }
    public string Description { get; set; }
    public string ImageFileName { get; set; }
    public int ImageSize { get; set; }
    public byte[] ImageData { get; set; }
    [Required(ErrorMessage="Please select image file.")]
    public HttpPostedFileBase File { get; set; }        
}
我的控制器代码:

public ActionResult Upload([Bind(Include = "Id,ProductTitle,Description,ImageFileName,ImageData,File,ImageSize")]Album album)
{
    if (ModelState.IsValid)
    {
        //  album.ImageFileName = album.File.FileName;
        // album.ImageSize = album.File.ContentLength;

        byte[] data = new byte[album.File.InputStream.Length];
        album.File.InputStream.Read(data, 0, data.Length);
        album.ImageData = data;

        var db = new AlbumContext();
        db.Albums.Add(album);
        db.SaveChanges();

        return RedirectToAction("Index");
    }
    return View(album);
}
我的视图代码:

<div class="form-group">
    <label class="control-label col-md-2">Select Image:</label> 
    <div class="col-md-10">
        @Html.TextBoxFor(model=>model.File, new { type="file"})
        @Html.ValidationMessage("CustomError")
    </div>
</div>

选择图像:
@Html.TextBoxFor(model=>model.File,新的{type=“File”})
@Html.ValidationMessage(“CustomError”)

这就是为什么要使用模型检索数据,然后将其转换为DTO对象

错误是因为您试图将该类存储到数据库中。这不是您要控制的类,也不是为了直接存储在数据库中而创建的。在本例中,
HttpPostedFileBase
是您的“模型”


创建另一个对象,并将其绑定到
DbContext
中,以便在数据库中存储有关该文件的所需信息。不要只是把对象扔进去。

这就是为什么要使用模型检索数据,然后将其转换为DTO对象

错误是因为您试图将该类存储到数据库中。这不是您要控制的类,也不是为了直接存储在数据库中而创建的。在本例中,
HttpPostedFileBase
是您的“模型”


创建另一个对象,并将其绑定到
DbContext
中,以便在数据库中存储有关该文件的所需信息。不要只是把对象扔进去。

在“绑定”属性中,定义“相册”的属性。“File”属性从何而来?Hello@SRQCoder,
文件
属性在
模型类
中定义。它的类型为
HttpPostedFileBase File
。您可以在这里看到我的模型类。您需要从数据模型中删除
公共HttpPostedFileBase文件{get;set;}
(它是一个复杂的对象,不能存储在数据库列中)。编辑数据时使用视图模型,视图模型将包含该属性(而不是
public byte[]ImageData{get;set;}
property-在“Bind”属性中,您定义了“album”的属性。“File”属性从何而来?Hello@SRQCoder,
文件
属性是在
模型类
中定义的。它的类型为
HttpPostedFileBase文件
。您可以在这里看到我的模型类。您需要删除
公共HttpPostedFileBase文件数据模型中的文件{get;set;}
(它是一个复杂的对象,不能存储在数据库列中)。编辑数据时使用视图模型,视图模型将包含该属性(而不是
公共字节[]ImageData{get;set;}
property-谢谢。但是你能在这里给我看一个示例代码吗?你的意思是创建一个新的“模型类”吗有关需要上载的文件的其他信息?也就是说,我需要两个类,一个用于HttpPostedFileBase属性,另一个用于其他属性??我的意思是为
HttpPostedFileBase
中需要的任何信息创建一个DTO类。我提供了到
HttpPostedFileBase
类的链接。您已经有了
相册
class,对你的文件做一个类似的处理。@krillgar你能帮我解决这个问题吗谢谢。但是你能在这里给我一个示例代码吗?你的意思是创建一个新的“模型类”吗有关需要上载的文件的其他信息?也就是说,我需要两个类,一个用于HttpPostedFileBase属性,另一个用于其他属性??我的意思是为
HttpPostedFileBase
中需要的任何信息创建一个DTO类。我提供了到
HttpPostedFileBase
类的链接。您已经有了
相册
c小姑娘,对你的文件做一个类似的处理。@krillgar你能帮我解决这个问题吗