Привет, я работаю над угловым 7 приложением с asp.net mvc.
И я пытаюсь сохранить загруженные документы в базу данных.
это метод сохранения данных:
export class EditDiplomaComponent extends AfwComponent implements OnInit {
resources: DiplomasWijzigenResourcesModel;
private readonly apiDiploma: 'api/register/teachers/current/diploma';
readonly resourceKeys = DiplomasWijzigenResourcesModel.keys;
buttons: ImmutableArrayType<ButtonModel>;
protected readonly formName = FormNamesModel.diplomaForm;
formModel: AfwFormService;
documentList?: DocumentListModel;
documentListCompoment: DocumentListComponent;
diplomaFormKeysModel: DiplomaFormKeysModel;
protected baseDocumentsUrl: string;
teacher: TeacherModel;
constructor(
private readonly http: AfwHttp,
readonly route: ActivatedRoute,
readonly textResourceService: TextResourceService,
private readonly formService: FormService,
private readonly multiFileUploadControlFactory: MultiFileUploadControlFactory,
private readonly feedbackService: FeedbackStoreService,
private readonly router: Router,
) {
super(textResourceService, route);
}
ngOnInit(): void {
// this.baseDocumentsUrl = `api/register/teachers/current/diploma/${this.teacher.guid}/documents?fileName=`;
const defaultModel = diplomaFormModel(this.multiFileUploadControlFactory);
this.formModel = this.formService.createModel<DiplomaFormModel, DiplomasWijzigenResourcesModel>(
defaultModel, { qualificationTerms: null, diplomasUpload: this.multiFileUploadControlFactory.createEmptyDefaultValues() }, this.resources
);
const saveBtn = new ActionButtonModel({ resourceKey: this.resourceKeys.opslaanKnop, isSubmit: true });
const cancelBtn = new CancelLinkButtonModel();
this.buttons = ImmutableArrayType.Create([saveBtn, cancelBtn]);
}
diplomaDataSubmitted($event: AfwFormService) {
// const formModel = $event;
if (this.allowSubmitAgain && this.formModel.form.valid) {
const obs = this.saveDiploma(true, this.resources.opslaanSpinnerTekst).pipe(map(() => {
this.router.navigateByUrl(RoutesRegisterModel.pathnameMyRegisterRouteDiplomas).then(() => {
this.feedbackService.addSuccessMessage (
{
feedbackPortalKey: FeedbackPortalsModel.mainFeedback,
message: { key: 'succesvolWijziging', value: this.resources.succesvolWijziging },
});
});
}))
this.submitAllowed(obs);
}
}
saveDiploma(competenceStatement: boolean, spinnerMessage: string): Observable<any> {
return this.http.post(`${this.apiDiploma}`,
competenceStatement,
spinnerMessage);
}
}
и это контроллер диплома:
[Authorize(Roles = IdentityRoles.Teacher)]
[RoutePrefix("api/register/teachers/current/diploma")]
public sealed class DiplomaController : ApiControllerBase
{
private readonly IDiplomaProcess _diplomaProcess;
/// <summary>
/// Constructor.
/// </summary>
public DiplomaController(IDiplomaProcess diplomaProcess)
{
_diplomaProcess = diplomaProcess;
}
/// <summary>
/// Create the diploma record for the current teacher.
/// </summary>
/// <param name="competenceStatement">Has agreed to the competence statement?</param>
[Route("")]
[HttpPost]
public void CreateDiploma(bool competenceStatement)
{
_diplomaProcess.CreateDiploma(competenceStatement);
}
/// <summary>
/// Delete the diploma record for the current teacher.
/// </summary>
[HttpDelete]
[Route("")]
public void DeleteDiploma()
{
_diplomaProcess.DeleteDiploma();
}
/// <summary>
/// Get the diploma documents of the current teacher.
/// </summary>
/// <returns>The DocumentListDto with the diploma documents.</returns>
[Route("")]
[HttpGet]
public DiplomaDto GetDiplomas()
{
return _diplomaProcess.GetDiplomas();
}
}
Но когда я отлаживаю код, я вижу это в этой строке:
return this.http.post(`${this.apiDiploma}`,
apDiploma не определена. И я использую Observable.
Но у меня есть идея, что вы должны подписаться на него. Но как подписаться на метод?
Спасибо
спасибо.
но в этой строке: вернуть this.http.post (${this.apiDiploma}
,
Я вижу правильный url: "api/register/teachers/current/diploma"
это вывод:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<DiplomaDto xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/VLR.BackEnd.Dto.Teacher">
<Documents xmlns:d2p1="http://schemas.datacontract.org/2004/07/VLR.BackEnd.Dto.Document">
<d2p1:Documents/>
<d2p1:DocumentsInQueue>-2147483648</d2p1:DocumentsInQueue>
<d2p1:IsSucceeded>true</d2p1:IsSucceeded>
</Documents>
<HasAgreedToCompetenceStatement>false</HasAgreedToCompetenceStatement>
</DiplomaDto>
Но если отлаживать бэкэнд (контроллер)
тогда я вижу, что это не этот метод:
[Route("")]
[HttpPost]
public void CreateDiploma(bool competenceStatement)
{
_diplomaProcess.CreateDiploma(competenceStatement);
}