Asp.net core .NET核心Web API参数绑定问题[FromForm]和[FromBody] 公共异步任务寄存器([FromForm]RegisterViewModel模型) { }

Asp.net core .NET核心Web API参数绑定问题[FromForm]和[FromBody] 公共异步任务寄存器([FromForm]RegisterViewModel模型) { },asp.net-core,.net-core,asp.net-core-mvc,asp.net-core-webapi,Asp.net Core,.net Core,Asp.net Core Mvc,Asp.net Core Webapi,这是一个web控制器操作,我正在将另一个简单控制器的模型传递给它: httpresponsemessageresponse=wait client.postsjsonasync(“api/Account/Register”,model); 问题是模型(RegisterViewModel)包含一个IFormFile类型字段,要发送该字段,我必须使用[FromForm],但它仅在数据直接从表单提交到api时有效,但我将表单提交到一个简单的控制器,并使用HttpClient和[FromBody]它接

这是一个web控制器操作,我正在将另一个简单控制器的模型传递给它:

httpresponsemessageresponse=wait client.postsjsonasync(“api/Account/Register”,model);
问题是模型(
RegisterViewModel
)包含一个
IFormFile
类型字段,要发送该字段,我必须使用
[FromForm]
,但它仅在数据直接从表单提交到api时有效,但我将表单提交到一个简单的控制器,并使用HttpClient和
[FromBody]
它接受所有其他字段,但不接受
ifformfile
字段

公共类RegisterViewModel
{
[必需]
[显示(Name=“电子邮件”)]
[电邮地址]
公共字符串电子邮件{get;set;}
[必需]
[StringLength(100,ErrorMessage={0}的长度必须至少为{2}个字符。”,MinimumLength=6)]
[数据类型(数据类型.密码)]
[显示(Name=“密码”)]
公共字符串密码{get;set;}
[数据类型(数据类型.密码)]
[显示(Name=“确认密码”)]
[比较(“密码”,ErrorMessage=“密码和确认密码不匹配。”)]
公共字符串ConfirmPassword{get;set;}
[必需(ErrorMessage=“输入名字:”)]
[StringLength(最大长度:30,最小长度=3)]
[MaxLength(30)]
[显示(Name=“First Name”)]
公共字符串名{get;set;}
[必需(ErrorMessage=“输入姓氏:”)]
[StringLength(最大长度:30,最小长度=3)]
[MaxLength(30)]
[显示(Name=“Last Name”)]
公共字符串lastName{get;set;}
[必需(ErrorMessage=“请选择配置文件图片”)]
公共文件档案图片{get;set;}
公共字符串配置文件PictureName{get;set;}
[长度(200)]
[MaxLength(200)]
[显示(Name=“将Facebook链接添加到您的个人资料”)]
[数据类型(DataType.Url)]
公共字符串facebookLink{get;set;}
[长度(200)]
[MaxLength(200)]
[显示(Name=“将Instagram链接添加到您的个人资料”)]
[数据类型(DataType.Url)]
公共字符串instagramLink{get;set;}
[长度(200)]
[MaxLength(200)]
[显示(Name=“将Twitter链接添加到您的个人资料”)]
[数据类型(DataType.Url)]
公共字符串twitterLink{get;set;}
[必需(ErrorMessage=“输入出生日期:”)]
[数据类型(DataType.Date)]
公共日期时间DOB{get;set;}
[必需]
[显示(名称=“注册号”)]
公共字符串季节{get;set;}
[必需]
公共字符串部门{get;set;}
[必需]
公共字符串滚动{get;set;}
公共IEnumerable季节{get;set;}
公共IEnumerable部门{get;set;}
}

你能发布你的viewmodel吗?@ArvindMaurya我编辑了你可以检查的问题。如果你是从C#调用它,你可以使用文件作为base64字符串保存在api中,这是一种单向的方法,但我在寻找它是否可以作为IformFileNo发送,你不能。IFormFile没有JSON表示,并且它在JSON中不可序列化/反序列化。@BambamDeo是对的,如果你的WebApi被称为传递json内容,那么文件必须以base64字符串的形式传递。你能发布你的viewmodel吗?@ArvindMaurya我编辑了你可以检查的问题。你可以使用文件作为base64字符串保存在api中,如果你是从C调用它的话,这是一种方法,但我正在寻找它是否可以作为IformFileNo发送,你可以't.IFormFile没有JSON表示,而且它在JSON中不可序列化/反序列化。@BambamDeo是对的,如果要调用WebApi传递JSON内容,则文件必须作为base64字符串传递。