Я публикую объект из пользовательского интерфейса Angular 6, я могу получить данные RAW в теле формы в виде строки. Данные дошли до метода контроллера тоже. Но я не смог привести его к объекту
Угловой 6 - календарь.Service.ts
saveSchedules(): Observable<any> {
const sch: CalenderSchedulesModel = {ScheduleDate: 'today', description: 'all is well'};
const formData = new FormData();
formData.append('CalenderSchedulesModel', JSON.stringify(sch));
const postOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
}),
withCredentials: true,
};
return this.http.post('http://mydevserver.com/api/schedules',
formData,
postOptions)
.pipe(catchError(this.handleError.bind(this)))
.pipe(map(data =>console.log(JSON.stringify(data))));
}
ASP.NET WebAPI - CalenderController.cs
[HttpPost]
public async System.Threading.Tasks.Task<String> schedules(CalenderSchedulesModel CalenderSchedulesModel)
{
try {
string content = "";
if (ModelState.IsValid && CalenderSchedulesModel != null)
{
// This if block is passed
Logger.Info("CalenderSchedulesModel.ScheduleDate); //prints null
Logger.Info(HttpUtility.HtmlEncode(CalenderSchedulesModel.ScheduleDate)); //prints null
using (var contentStream = await this.Request.Content.ReadAsStreamAsync())
{
contentStream.Seek(0, SeekOrigin.Begin);
using (var sr = new StreamReader(contentStream))
{
content = sr.ReadToEnd();
Logger.Info(content); // prints ------WebKitFormBoundaryomeguzqYBNNqAAyg information with {"ScheduleDate":"today","description":"all is well"}
}
}
}
}
catch (Exception e)
{
Logger.Error(e.Message);
Logger.Error(e.ToString);
Logger.Error(e.StackTrace);
}
return "Recieved 200 ok";
}
после того, как вызванный API ответ получен как "Получено 200 нормально". Но все, что мне нужно, - это анализ данных формы для моего объекта CalenderSchedulesModel.
Найдите заголовок запроса для этого вызова API.
РЕДАКТИРОВАТЬ: изменен на HttpParams вместо отправки данных формы
const sch: CalenderSchedulesModel = {ScheduleDate: 'today', description: 'all is well'};
const body = new HttpParams().set('CalenderSchedulesModel', JSON.stringify(sch));
Теперь я получаю объект, но все еще не могу разобрать объект C #