Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Asp.net 如何将图像上载到Razor页面中的模型?_Asp.net_Asp.net Core_Web_Razor Pages - Fatal编程技术网

Asp.net 如何将图像上载到Razor页面中的模型?

Asp.net 如何将图像上载到Razor页面中的模型?,asp.net,asp.net-core,web,razor-pages,Asp.net,Asp.net Core,Web,Razor Pages,我想使用ASP.NET核心制作一个类似电子商务的web应用程序 创建模型是可以的,但是我需要为产品上传图片 Razor页面只允许一个@model,这样我就无法访问我为上传图像而创建的Image类。这个图像类只是一个用于上载的类,它将包含图像的路径、id、描述和一个NotMappedifformfile属性来执行上载 但出于用户体验的目的,用户(电子商务的所有者)需要填写产品模型并在同一页面上载图像,并以相同的形式发布产品。但剃须刀页面只允许一种型号,我怎么能做到呢?这种方式是愚蠢的、不可能的还是

我想使用ASP.NET核心制作一个类似电子商务的web应用程序

创建模型是可以的,但是我需要为产品上传图片

Razor页面只允许一个
@model
,这样我就无法访问我为上传图像而创建的
Image
类。这个
图像
类只是一个用于上载的类,它将包含图像的路径、id、描述和一个
NotMapped
ifformfile
属性来执行上载

但出于用户体验的目的,用户(电子商务的所有者)需要填写
产品
模型并在同一页面上载图像,并以相同的形式发布
产品。但剃须刀页面只允许一种型号,我怎么能做到呢?这种方式是愚蠢的、不可能的还是两者兼而有之

提前谢谢

但剃须刀页面只允许一种型号,我怎么能做到呢? 这种方式是愚蠢的、不可能的还是两者兼而有之

这是可能的

razor页面
中,我们通常通过添加不同类型的
属性
来绑定不同的模型,请查看

根据您的要求,我创建了一个演示供您参考:

产品型号:

 public class Product
    {
        public int Id { get; set; }
        public string Name{ get; set; }
    }
图像模型:

public class Image
{
    public string path { get; set; }
    public int id{ get; set; }
    public string description { get; set; }
    [NotMapped]
    public IFormFile file{ get; set; }
}
Page.cshtml.cs:

 public class UploadTestModel : PageModel
    {
        [BindProperty]
        public Image  image { get; set; }

        [BindProperty]
        public Product product { get; set; }
        public void OnGet()
        {

        }
        public void OnPost()
        {

        }
    }
Page.cshtml:

@page
@model WebApplication_razorpage.Pages.UploadTestModel
@{
    ViewData["Title"] = "UploadTest";
    Layout = "~/Pages/Shared/_Layout.cshtml";
}

<h1>UploadTest</h1>
<form method="post" enctype="multipart/form-data">
    ProductName:<input id="Text1" type="text" asp-for="product.Name" /><br />
    choose file:<input id="File1" type="file" asp-for="image.file" /><br />
    file description:<input id="Text1" type="text" asp-for="image.description" /><br />
    <input id="Submit1" type="submit" value="submit" />
</form>
@page
@模型WebApplication\u razorpage.Pages.UploadTestModel
@{
ViewData[“Title”]=“UploadTest”;
Layout=“~/Pages/Shared/_Layout.cshtml”;
}
上载测试
产品名称:
选择文件:
文件说明:
以下是测试结果:

但剃须刀页面只允许一种型号,我怎么能做到呢? 这种方式是愚蠢的、不可能的还是两者兼而有之

这是可能的

razor页面
中,我们通常通过添加不同类型的
属性
来绑定不同的模型,请查看

根据您的要求,我创建了一个演示供您参考:

产品型号:

 public class Product
    {
        public int Id { get; set; }
        public string Name{ get; set; }
    }
图像模型:

public class Image
{
    public string path { get; set; }
    public int id{ get; set; }
    public string description { get; set; }
    [NotMapped]
    public IFormFile file{ get; set; }
}
Page.cshtml.cs:

 public class UploadTestModel : PageModel
    {
        [BindProperty]
        public Image  image { get; set; }

        [BindProperty]
        public Product product { get; set; }
        public void OnGet()
        {

        }
        public void OnPost()
        {

        }
    }
Page.cshtml:

@page
@model WebApplication_razorpage.Pages.UploadTestModel
@{
    ViewData["Title"] = "UploadTest";
    Layout = "~/Pages/Shared/_Layout.cshtml";
}

<h1>UploadTest</h1>
<form method="post" enctype="multipart/form-data">
    ProductName:<input id="Text1" type="text" asp-for="product.Name" /><br />
    choose file:<input id="File1" type="file" asp-for="image.file" /><br />
    file description:<input id="Text1" type="text" asp-for="image.description" /><br />
    <input id="Submit1" type="submit" value="submit" />
</form>
@page
@模型WebApplication\u razorpage.Pages.UploadTestModel
@{
ViewData[“Title”]=“UploadTest”;
Layout=“~/Pages/Shared/_Layout.cshtml”;
}
上载测试
产品名称:
选择文件:
文件说明:
以下是测试结果:


我想我的思路还不够清晰。只需向my.cshtml.cs文件添加一个属性就可以解决这个问题。稍后再确认。请看这里:@AlissonFabiano,我给你举了一个例子,如果你还有其他问题,请告诉我。@YongqingYu,非常感谢。我想我想我还不够清楚。只需向my.cshtml.cs文件添加一个属性就可以解决这个问题。稍后再确认。请看这里:@AlissonFabiano,我给你举了一个例子,如果你还有其他问题,请告诉我。@YongqingYu,非常感谢。