没有给定的参数对应于 'Interface.Create(Trademark, IFormFile)' 的要求的形参 'photo'?
There is no argument given that corresponds to the required formal parameter 'photo' of 'Interface.Create(Trademark, IFormFile)'?
我正在使用 .Net Core 5 并为我的商标上传图片。我在我的工作中使用存储库并收到错误 CS706:没有给定的参数对应于 Controller
中 'Interface.Create(Trademark, IFormFile)' 的必需形式参数 'photo'
_trademarkRepo.CreateNewTrademark(trademark);
控制器
public IActionResult CreateTrademark(Trademark trademark)
{
if(ModelState.IsValid)
{
_trademarkRepo.CreateNewTrademark(trademark);
}
_logger.LogInformation("...");
return RedirectToAction("Index");
}
回购
public bool CreateNewTrademark(Trademark trademark, IFormFile photo)
{
var path = Path.Combine(this._webHostEnvironment.WebRootPath, "trademarks", photo.FileName);
var stream = new FileStream(path, FileMode.Create);
photo.CopyToAsync(stream);
if(CheckExist(trademark.TrademarkName))
{
return false;
}
var newTrademark = new Trademark
{
TrademarkName = trademark.TrademarkName,
Description = trademark.Description,
Image = photo.FileName
};
_dbContext.Trademarks.Add(newTrademark);
_dbContext.SaveChanges();
return true;
}
从错误中可以看出是什么错误。
repo 级别的方法需要两个参数。一个是商标,一个是照片。
当您从控制器调用它时,您只传递了一个。 (仅商标,缺少照片)。这是错误。
基本上你的控制器应该如下所示。
public IActionResult CreateTrademark(Trademark trademark,IFromFile photo)
{
if(ModelState.IsValid)
{
_trademarkRepo.CreateNewTrademark(trademark,photo);
}
_logger.LogInformation("...");
return RedirectToAction("Index");
}
注意:还有许多其他依赖项,例如您如何从 UI 中 post 文件等。这不是此问题的范围,因此请回答。你必须寻找那些细节。
我正在使用 .Net Core 5 并为我的商标上传图片。我在我的工作中使用存储库并收到错误 CS706:没有给定的参数对应于 Controller
中 'Interface.Create(Trademark, IFormFile)' 的必需形式参数 'photo'_trademarkRepo.CreateNewTrademark(trademark);
控制器
public IActionResult CreateTrademark(Trademark trademark)
{
if(ModelState.IsValid)
{
_trademarkRepo.CreateNewTrademark(trademark);
}
_logger.LogInformation("...");
return RedirectToAction("Index");
}
回购
public bool CreateNewTrademark(Trademark trademark, IFormFile photo)
{
var path = Path.Combine(this._webHostEnvironment.WebRootPath, "trademarks", photo.FileName);
var stream = new FileStream(path, FileMode.Create);
photo.CopyToAsync(stream);
if(CheckExist(trademark.TrademarkName))
{
return false;
}
var newTrademark = new Trademark
{
TrademarkName = trademark.TrademarkName,
Description = trademark.Description,
Image = photo.FileName
};
_dbContext.Trademarks.Add(newTrademark);
_dbContext.SaveChanges();
return true;
}
从错误中可以看出是什么错误。
repo 级别的方法需要两个参数。一个是商标,一个是照片。
当您从控制器调用它时,您只传递了一个。 (仅商标,缺少照片)。这是错误。
基本上你的控制器应该如下所示。
public IActionResult CreateTrademark(Trademark trademark,IFromFile photo)
{
if(ModelState.IsValid)
{
_trademarkRepo.CreateNewTrademark(trademark,photo);
}
_logger.LogInformation("...");
return RedirectToAction("Index");
}
注意:还有许多其他依赖项,例如您如何从 UI 中 post 文件等。这不是此问题的范围,因此请回答。你必须寻找那些细节。