asp.net-core-mvc - 没有给出与“Interface.Create(Trademark, IFormFile)”所需的形式参数“photo”相对应的参数?
问题描述
我正在使用 .Net Core 5 并为我的商标上传图片。我为我的工作使用存储库并收到错误 CS706: 没有给出与控制器中 '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;
}
解决方案
从错误中可以明显看出错误是什么。
回购级别的方法需要两个参数。一个是商标,另一个是照片。
当您从控制器调用它时,您只通过了一个。(仅商标,照片缺失)。这是错误。
基本上你的控制器应该如下所示。
public IActionResult CreateTrademark(Trademark trademark,IFromFile photo)
{
if(ModelState.IsValid)
{
_trademarkRepo.CreateNewTrademark(trademark,photo);
}
_logger.LogInformation("...");
return RedirectToAction("Index");
}
注意:还有许多其他依赖项,例如您如何从 UI 发布文件等。这不是这个问题的范围,所以回答。你必须寻找那些细节。
推荐阅读
- javascript - jQuery - 限制点击事件仅在单个元素中发生
- postgresql - 在运行 PostgreSQL 版本 12.2 的 Dbeaver 中运行 `SELECT current_timestamp` 会给我一个过去的日期
- gitlab - GitLab 安装和/或重新配置失败
- python - 生成总和有限的随机权重数
- javascript - 使用 HTML 捕获属性时的 MIME 类型是什么?
- react-native - 在运行时动态调整滚动视图高度
- cmd - 使用原始 Windows 环境变量从 cygwin shell 启动 cmd.exe?
- python - 如何修复错误:TypeError: applymap() got an unexpected keyword argument 'na_action'
- css - CSS 不会覆盖预览调用 css | antD反应
- regex - tmLanguage:如何“链接”模式,例如在匹配后匹配某些内容,甚至在换行符上?