我正在研究ASP.NET Core 2 MVC应用程序,尝试设置服务层。我有一个非常基本的应用程序,我想:
现在我已经通过viewmodel在我的控制器中完成了所有工作。但我想在我的服务层中使用一个很好的方法来同时执行数据库添加和文件系统添加,但是我找不到将文件传递给服务的方法。
我想出了如何在服务层中添加数据库,但不知道如何在那里使用它来执行任何操作。
这是我的控制者:
[HttpPost]
public async Task<IActionResult> Create(CreateMentorViewModel model)
{
var mentor = new Mentor
{
FirstName = model.FirstName,
LastName = model.LastName,
Created = DateTime.Now,
};
_ctx.Add(mentor);
await _ctx.SaveChangesAsync();
int newid = mentor.Id;
if (model.Image != null)
{
var uploads = Path.Combine(_hostingEnvironment.WebRootPath, "img/profilepics");
var fileId = newid + ".jpg";
var filePath = Path.Combine(uploads, fileId);
model.Image.CopyTo(new FileStream(filePath, FileMode.Create));
}
return RedirectToAction("Index", "Mentor");
}
我正在寻找的是关于如何将文件从控制器中的viewmodel发送到服务的一些指示,或者更多的指示 - 我应该这样做吗? ?
答案 0 :(得分:0)
您只需将IFormFile
作为参数传递给服务,例如
public void MyMethod(IFormFile file)
{
...
}
并传递model.Image
[HttpPost]
public async Task<IActionResult> Create(CreateMentorViewModel model)
{
...
myService.MyMethod(model.Image);
...
}