因此,上个月我一直在学习ASP.NET Core MVC,并尝试构建我的第一个网站。我设法在新的控制器中进行上传和显示代码,但是现在我要做的是使用户能够将图片上传到DB,以获取电影(或在我的情况下发货)并在其中显示表格的“详细信息”页面。我已经看过很多代码,但都不适合我的情况,这很可能是因为我做错了事(我以前没有编程方面的经验,只是在学校里很擅长编程,并且对ifs等基本知识有所了解,而等等。非常感谢您提供的任何帮助!
试图制作一个系统,每次将图像名称重命名为一个数字,这样我就可以使用Ship的ID购买正确的图像。问题在于,每次重新启动服务器时,变量都会不断重置。然后,我尝试使用一个人在数据库中创建的普通表,但是我找不到一种方法来显示它(我看到的所有教程都已经过时了,而且看起来也不太好)。
那是我的模型代码:
namespace Sailing.Models
{
public class Ships
{
public int ID { get; set; }
public string Name { get; set; }
public string Captain { get; set; }
public int Crew { get; set; }
public string ImageName { set; get; }
}
public class CreateModel : PageModel
{
private readonly SailingContext context;
private readonly IHostingEnvironment hostingEnvironment;
public CreateModel(SailingContext context, IHostingEnvironment environment)
{
this.hostingEnvironment = environment;
this.context = context;
}
[BindProperty]
public Ships Ship { set; get; }
[BindProperty]
public IFormFile Image { set; get; }
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
return Page();
if (this.Image != null)
{
var fileName = GetUniqueName(this.Image.FileName);
var uploads = Path.Combine(hostingEnvironment.WebRootPath, "uploads");
var filePath = Path.Combine(uploads, fileName);
this.Image.CopyTo(new FileStream(filePath, FileMode.Create));
this.Ship.ImageName = fileName; // Set the file name
}
context.Ships.Add(this.Ship);
await context.SaveChangesAsync();
return RedirectToPage("ShipsList");
}
private string GetUniqueName(string fileName)
{
fileName = Path.GetFileName(fileName);
return Path.GetFileNameWithoutExtension(fileName)
+ "_" + Guid.NewGuid().ToString().Substring(0, 4)
+ Path.GetExtension(fileName);
}
}
}
这是我的创建代码:
<div class="row">
<div class="col-md-4">
<form asp-action="Create" enctype="multipart/form-data">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
........................
</div>
<div>
<input type="file" asp-for="Image" />
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
好吧,我希望IFormFile能够工作并显示图像,但是Image IFormFile无法识别,如果将其与表示IFormFile不是有效类型的其余属性放在一起,则会出现错误。我在这里写的方式,在创建了名为Image的列之后,出现了错误:
严重性代码描述项目文件行抑制状态 错误CS1061“船舶”不包含“图像”的定义,找不到可以接受的扩展方法“图像”,该类型接受“船舶”类型的第一个参数(是否缺少using指令或程序集引用?)