json - JSON 值无法转换为 System.Boolean。路径:$
问题描述
我正在尝试从 Angular 前端向 asp.net API 服务器发送请求。要提交的表格定义为:
export class SaleToUpdate {
id: number;
shipped: boolean;
shipDate: string;
returned: boolean;
returnDate: string;
}
标记和代码
<mat-grid-tile [colspan] = "2" [rowspan] = "1">
<mat-form-field>
<input formControlName="shipDate" matInput placeholder="Ship Date">
</mat-form-field>
<div class="radio-group ml-3">
<mat-radio-group formControlName="shipped" required (ngModelChange)="shipped">
<mat-radio-button value="false">No</mat-radio-button>
<mat-radio-button value="true" class="ml-4">Yes</mat-radio-button>
</mat-radio-group>
</div>
</mat-grid-tile>
onSubmit() 方法
onSubmit() {
if (this.salesService.saleForm.valid) {
let sale: SaleToUpdate = this.salesService.saleForm.value;
console.log(sale);
this.salesService.updateSale(sale.id, sale).subscribe(res => {
console.log(res);
}, error => {
console.log(error);
});
}
}
因此,基本上,我的目的是将表单数据(SaleToUpdate
类)发送到后端服务器。
服务器端的 DTO
using System;
namespace API.Dtos
{
public class SaleUpdateDto
{
public int Id { get; set; }
public bool Shipped { get; set; }
public DateTime ShipDate { get; set; }
public bool Returned { get; set; }
public DateTime ReturnDate { get; set; }
}
}
从控制台,我得到了错误
JSON 值无法转换为 System.Boolean。路径:$.shipped | 行号:0 | BytePositionInLine: 274." 当从客户端单击提交时。
我注意到表单中shipped
&的值是字符串数据类型而不是布尔数据类型returned
任何人都可以帮我解决任何可能的问题吗?
解决方案
您需要在提交之前格式化表单数据。只需创建一个新的数据对象并将值从字符串解析为布尔值。像这样的东西
onSubmit() {
if (this.salesService.saleForm.valid) {
let sale: SaleToUpdate = this.salesService.saleForm.value;
console.log(sale);
//this is where to parse object
var data = {
id = sale.id,
shipDate = sale.shipDate,
shipped = sale.shipped === 'true' ? true: false //this line does the trick
....
}
this.salesService.updateSale(sale.id, data).subscribe(res => {
console.log(res);
}, error => {
console.log(error);
});
}
}
希望你觉得这有帮助
推荐阅读
- html - Sass 编译中的 Ruby 错误:Errno :: ENOENT: No files or directory of this type @ rb_sysopen test.scss 使用 --trace 进行回溯
- sql-server - 如何获取某个日期之前的最新余额(t-sql)
- python - 过滤掉一个“。” 来自 python 数据框列
- reactjs - 引导轮播:当数据更改时将活动项目设置为第一个(Reactjs)
- python - 使用 Twisted Websocket Python 获取 SSL 错误
- python-3.x - 在 Spacy 管道中启用 CPU 上的多处理
- python - 如何按降序对字典的值进行排序,并按字母顺序对键进行排序
- discord.js - Discord js v13 命令参数选项
- c++ - 在linux上关闭窗口时如何使CEF应用程序进程退出?
- laravel - Laravel jetstream 使用下拉菜单更改用户