C# 在blazor中过账会返回异常情况,说明;无法将JSON值转换为System.Int32;

C# 在blazor中过账会返回异常情况,说明;无法将JSON值转换为System.Int32;,c#,json,blazor,.net-standard,jwt-auth,C#,Json,Blazor,.net Standard,Jwt Auth,我是Blazor新手,在尝试使用身份验证令牌发布数据时遇到以下问题:在API调用时,异常被解除,消息为“JSON值无法转换为System.Int32.Path:$| LineNumber:0 | BytePositionLine:1.” 以下是我的blazor页面代码隐藏中的代码: public partial class ContactCreate : AuthenticatedPageBase { [Inject] public IContactDataService Con

我是Blazor新手,在尝试使用身份验证令牌发布数据时遇到以下问题:在API调用时,异常被解除,消息为“JSON值无法转换为System.Int32.Path:$| LineNumber:0 | BytePositionLine:1.

以下是我的blazor页面代码隐藏中的代码:

public partial class ContactCreate : AuthenticatedPageBase
{
    [Inject]
    public IContactDataService ContactDataService { get; set; }

    [Inject]
    public ICountryDataService CountryDataService { get; set; }

    public Contact.Post Model { get; set; } = new Contact.Post();

    protected string CountryIdString { get; set; } = string.Empty;

    protected string TokenString { get; set; } = string.Empty;

    public string ErrorMessage { get; set; } = string.Empty;

    protected List<Country.ListItem> Countries { get; set; } = new List<Country.ListItem>();

    protected async override Task OnInitializedAsync()
    {
        await base.OnInitializedAsync();
        Countries = (await CountryDataService.GetCountryListAsync(Token.Token)).ToList();
        TokenString = Token.Token;
    }

    protected async Task HandleValidSubmit()
    {
        try
        {
            Model.CountryId = int.Parse(CountryIdString);
            var response = await ContactDataService.PostContactAsync(TokenString, Model);
            NavManager.NavigateTo("/contacts");
        }
        catch(Exception ex)
        {
            ErrorMessage = ex.Message;
        }
    }

    protected void HandleInvalidSubmit()
    {
        ErrorMessage = "Le formulaire n'est pas valide. Veuillez réessayer.";
    }
}
下面是我要介绍的对象模型:

public class Contact
{
    public class Post
    {
        [MaxLength(50)]
        public string FirstName { get; set; }
        [MaxLength(50)]
        public string LastName { get; set; }
        [MaxLength(50)]
        public string CompanyName { get; set; }
        public string AddressLine1 { get; set; }
        public string AddressLine2 { get; set; }
        [MaxLength(20)]
        public string PostCode { get; set; }
        [MaxLength(60)]
        public string Locality { get; set; }
        public int CountryId { get; set; }
    }
}
最后,这里是我试图达到的API方法:

[HttpPost]
public async Task<ActionResult> PostContact(Contact.Post model)
{
    try
    {
        var createdId = await _contactRepository.CreateAsync(model);
        return Ok(new { Id = createdId });
    }
    catch (Exception ex)
    {
        return BadRequest(new { ex.Message });
    }
}
[HttpPost]
公共异步任务PostContact(Contact.Post模型)
{
尝试
{
var createdId=await\u contactRepository.CreateAsync(模型);
返回Ok(新的{Id=createdId});
}
捕获(例外情况除外)
{
返回BADDREQUEST(新的{exmessage});
}
}
你知道在这个神秘的错误消息背后发生了什么或者有什么实际的异常吗


注:我知道有一个问题与确切的例外消息,但它涉及到.NET核心,而我的目标是.NET标准2.1。我已经读过了,它显然不适用于这种情况。

您没有返回int(Id)。您正在返回一个名为Id的int属性的匿名对象。 试一试


您没有返回int(Id)。您正在返回一个名为Id的int属性的匿名对象。 试一试


什么是
响应
,特别是返回的JSON是什么?抛出异常的确切位置是什么?响应是什么,具体返回的JSON是什么?异常抛出的确切位置是什么?确实是这样,我忘了修改return语句。我没有注意到它,因为我的API控制器方法上的断点由于某种原因没有到达。确实是这样,我忘记了修改返回语句。我没有注意它,因为我的API控制器方法上的断点由于某种原因没有到达。
public class Contact
{
    public class Post
    {
        [MaxLength(50)]
        public string FirstName { get; set; }
        [MaxLength(50)]
        public string LastName { get; set; }
        [MaxLength(50)]
        public string CompanyName { get; set; }
        public string AddressLine1 { get; set; }
        public string AddressLine2 { get; set; }
        [MaxLength(20)]
        public string PostCode { get; set; }
        [MaxLength(60)]
        public string Locality { get; set; }
        public int CountryId { get; set; }
    }
}
[HttpPost]
public async Task<ActionResult> PostContact(Contact.Post model)
{
    try
    {
        var createdId = await _contactRepository.CreateAsync(model);
        return Ok(new { Id = createdId });
    }
    catch (Exception ex)
    {
        return BadRequest(new { ex.Message });
    }
}
return Ok(createdId);