>我有一个Web API控制器,其中包含如下的post命令:
[HttpPost]
public void Post([FromBody]UserProfile value)
{
...
}
这是我的用户配置文件类的样子:
public class UserProfile
{
public string UserId { get; set; }
public string Email { get; set; }
}
如果客户端发送如下所示的 post 请求,我希望还能够反序列化额外的字段。有没有办法在我的数据模型中动态创建这些字段?
{
"userId": "a123",
"email": "foo@bar.com",
"firstName": "John",
"lastName": "Doe",
"...": "..."
}
我希望能够接受(至少(userId和电子邮件,但是如果用户向我发送更多数据,我也想接受它,以便将其存储到NoSQL数据库中。
我可能只是将我的对象从用户配置文件更改为字典,但我希望我的招摇文档显示 UserId 和电子邮件。
有没有办法在我的数据模型中动态创建这些字段?
我能想到的一个解决方案是接受一个字典,它可以容纳任意数量的键值对,如下所示:
[HttpPost]
public void Post([FromBody]IDictionary<string, string> pairs)
{
...
}
您可以从字典中获取UserId
和Email
,如果有更多项目,那么您也可以处理这些项目。
您可以做的另一件事是尝试考虑对象可以具有的所有可能属性,并使其中大多数是可选的,然后在控制器中检查它们是否具有值并处理它们。