Я использую веб-API с ASP.NET Core MVC, entityframework и angular в качестве внешнего интерфейса.
В моем угловом приложении у меня есть компонент Stepper https://material.angular.io/components/stepper
На первом шаге я хочу заполнить форму, и как только я нажимаю «Далее», я хочу создать задачу и наВо второй форме я хочу обновить настройки для этой вновь созданной задачи.Однако мне нужно получить PK только что созданной задачи, чтобы обновить настройки во второй форме.
Существует вызов API для создания новой задачи в таблице tTask в sqlserver.
Это мой метод публикации API.
[ResponseType(typeof(CreatingTaskModel))]
public IHttpActionResult PosttTask(CreatingTaskModel CreatingTaskModel)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var newtTask= new tTask
{
TaskName = CreatingTaskModel.TaskName,
TaskDescription = CreatingTaskModel.TaskDescription,
EmailSubject = CreatingTaskModel.EmailSubject,
EmailBody = CreatingTaskModel.EmailBody,
FK_TaskTeam = CreatingTaskModel.tTaskTeam.pk_TaskTeam,
Enabled = CreatingTaskModel.Enabled ? 1:0,
};
db.tTasks.Add(newtTask);
db.SaveChanges();
var pk = new {id = CreatingTaskModel.PK_Task};
return Ok("Success");
}
Это код отправки в угловом формате:
onSubmit()
{
if(this.taskForm.valid)
{
this.service.createTask(this.taskForm.value).subscribe((data) => {
debugger;
console.log(data)
})
}
}
Я видел, что return Ok () в моем webapi возвращает сообщение, и я думал о сортировке таблицы tTask по убываниюпорядок после db.SaveChanges ();и возвращая последний найденный элемент и отправляя его обратно в Ok (pk), а затем преобразуя его в целое число на моей клиентской стороне и используя его, чтобы получить данные для его обновления.
Как правильно это сделать?Это должно быть сделано в SQL или на веб-интерфейс?
Это то, что я в конечном итоге сделал:
var newObject = new
{
id = newtTask.PK_Task,
message = "Success"
};
return Ok(newObject);
и на угловой у меня это:
onSubmit(){
if(this.taskForm.valid) {
this.service.createTask(this.taskForm.value).subscribe((data) => {
if(data.message){
if(data.message == "Success"){
this.getRecipentData(data.id);
this.AdditionalRecipientForm.controls['FK_Task'].setValue(data.id);
this.pk_Task = data.id;
}
}
debugger;
console.log(data)
})
}
Это просто не кажется практичным, но это делает работу.Что, вы парни, думаете?Должен ли я вместо того, чтобы идти на подачу дважды, может быть, после того, как она закончит заполнять, обе формы отправят их обе?Например, вызвать метод create в моем API, а затем вызвать мой второй API, чтобы обновить данные, представленные во второй форме.Я просто ищу идеи или наиболее распространенную практику для подобных ситуаций.