我尝试在www.example.com内核中执行搜索功能Asp.net,这是我的控制器
[HttpPost("searchbyname")]
public async Task<ActionResult<List<SelectedChildDto>>> SearchByName([FromBody]string firstName)
{ if (string.IsNullOrWhiteSpace(firstName)) { return new List<SelectedChildDto>(); }
return await _context.Children
.Where(x => x.FirstName.Contains(firstName))
.OrderBy(x => x.FirstName)
.Select(x => new SelectedChildDto { Cld = x.Cld, ChildCode = x.ChildCode,
FirstName = x.FirstName, PhotoPath = x.PhotoPath })
.Take(5)
.ToListAsync();
}
我从模型中得到了这个DTO类
namespace API.Dtos
{
public class SelectedChildDto
{
public int Cld { get; set; }
public string ChildCode { get; set; }
public string FirstName { get; set; }
public string PhotoPath { get; set; }
}
}
“错误”:{“$":[“JSON值无法转换为System. String。路径:$|行号:0|行内字节位置:1.”] }
2条答案
按热度按时间wvt8vs2t1#
我不知道您如何在视图中传递
firstName
,但您的数据格式不正确。如果您刚刚传递了一个字符串
firstName
而没有[FromBody]
,您可以参考下面的代码.控制器:
查看:
测试结果:第一节第一节第一节第一节第一节第二节第一节
如果你想使用
[FromBody]
,你可以参考下面的代码。控制器:查看:
测试结果:第一节第三节第一节第一节第四节第一节
deyfvvtc2#
此问题是由System.Text.Json对控制器的单个
[FromBody] string
参数进行反序列化引起的。请检查此答案以了解如何修复此问题。