Как я могу назначить json свойств из моего внешнего интерфейса нескольким базовым моделям в моем API? - PullRequest
0 голосов
/ 11 марта 2020

У меня есть компонент React, который отправляет сообщения на контроллер API следующим образом:

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 принадлежат моей команде Модель .cs.

правомочные игроки , отдел принадлежат модели Department.cs.

тип исследования , numOfStudents и currentState относятся к моей модели research.cs.

У меня вопрос, я не могу понять, как мне перевести эти данные, чтобы мой контроллер API мог читать это и назначить правильные значения для соответствующих свойств модели.

Пока у меня есть это в моем c# контроллере:

[HttpPost]
public async Task<ActionResult> AcceptEntry([FromBody] ???)

Я немного затрудняюсь справиться с этим .

Есть ли способ?

Спасибо!

1 Ответ

1 голос
/ 11 марта 2020

teamName, teamEmail и trainer принадлежат моей модели team.cs.

elitablePlayers, отдел принадлежит модели Department.cs.

researchType, numOfStudents и currentState принадлежат к моей модели research.cs.

Почему вы не создаете общую модель в своих приложениях?

public class CommonModel {
  public string teamName {get; set;} 
  teamEmail, 
  eligiblePlayers, 
  department, 
  researchType, 
  numOfStudents, 
  currentState
}

Затем в контроллере:

[HttpPost]
public async Task<ActionResult> AcceptEntry([FromBody] CommonModel model) {

 var team = new Team() {
   teamName = model.teamName,
   ...
 }
 var department = new Department() {
   eligiblePlayers = model.eligiblePlayers,
   ...
 }
}
...