【发布时间】:2020-09-14 14:27:52
【问题描述】:
我尝试了一种来自 StackOverflow 的文件上传方法,并使用 IHostEnvironment 设置成功上传了图像。但我无法弄清楚Editmodel。我想删除现有照片并在编辑表单中添加一张新照片。
这是模型:
[Key]
public int PostID { get; set; }
[Required]
[StringLength(160)]
public string Title { get; set; }
public string FeatureImage { get; set; }
这里是 Create.cshtml.cs:
public class CreateModel : PageModel
{
private readonly RazorApp.Data.ApplicationDbContext _context;
private readonly IHostEnvironment hostingEnvironment;
public CreateModel(RazorApp.Data.ApplicationDbContext context, IHostEnvironment environment)
{
this.hostingEnvironment = environment;
_context = context;
}
[BindProperty]
public Post Post { get; set; }
[BindProperty]
public IFormFile Image { get; set; }
public async Task<IActionResult> OnPostAsync()
{
if (this.Image != null)
{
var fileName = GetUniqueName(this.Image.FileName);
var uploads = Path.Combine(hostingEnvironment.ContentRootPath, "wwwroot/uploads");
var filePath = Path.Combine(uploads, fileName);
this.Image.CopyTo(new FileStream(filePath, FileMode.Create));
this.Post.FeatureImage = fileName; // Set the file name
}
var emptyPost = new Post();
if (await TryUpdateModelAsync<Post>(
emptyPost,
"post",
p => p.Title, p => p.FeatureImage))
{
_context.Post.Add(Post);
await _context.SaveChangesAsync();
return RedirectToPage("./Index");
}
return Page();
}
private string GetUniqueName(string fileName)
{
fileName = Path.GetFileName(fileName);
return Path.GetFileNameWithoutExtension(fileName)
+ "_" + Guid.NewGuid().ToString().Substring(0, 4)
+ Path.GetExtension(fileName);
}
}
正如我所说,上传图片工作正常。但我无法弄清楚edit.cshtml.cs。如何删除现有照片并添加新图像?
【问题讨论】:
标签: c# asp.net-core razor-pages