【发布时间】:2020-03-11 14:51:42
【问题描述】:
我有一个像这样发布到 API 控制器的 React 组件:
onSubmit={async values => {
await new Promise(resolve => setTimeout(resolve, 500));
axios({
method: "POST",
url: "/educationalgames/api/acceptentry",
data: values
});
alert(JSON.stringify(values, null, 2));
}}
当我点击提交时,我看到了它找到的值:
{
"eligiblePlayers": [],
"teamName": "FalconOne",
"teamEmail": "fc@coma.edu",
"trainer": "",
"department": "Physics",
"researchType": "Meta",
"numOfStudents": 50,
"currentState": true
}
以上数据是来自我的 c# 后端 API 中不同模型的混合属性。
teamName、teamEmail 和 trainer 属于我的 team.cs 模型。
eligiblePlayers、department属于department.cs模型。
researchType、numOfStudents 和 currentState 属于我的 research.cs 模型。
我的问题是,我不知道如何翻译这些数据,以便我的 API 控制器可以读取它并将正确的值分配给匹配的模型属性。
到目前为止,我的 c# 控制器中有这个:
[HttpPost]
public async Task<ActionResult> AcceptEntry([FromBody] ???)
我有点不知所措。
有办法吗?
谢谢!
【问题讨论】:
-
您可以将所有模型包装在一个单独的视图模型中,如下所示:stackoverflow.com/questions/39185634/…
-
只需为 API 创建一个新模型。无论如何,您的模型不一定与您的后端模型直接相关。
-
@DavidG 但如果前端的属性与我的模型不匹配,它们最终将如何写入数据库?谢谢
-
就像我说的,您的 api 模型不一定与您用于数据库的模型相同。在两者之间写一个层,在两者之间进行转换。或者使用 AutoMapper 之类的库。
标签: c# asp.net-core-mvc asp.net-core-webapi