如何将空字符串传递给可为空的 int

How to pass empty string to nullable int

我有这个属性

public int? CodigoBanco { get; set; }

当我尝试以这种方式将它发送到服务器时

codigoBanco: ""

我有以下错误

The following errors were detected during validation:\r\n - The JSON value could not be converted to System.Nullable`1[System.Int32]

我不知道你这样做的目的是什么,但简单的方法就是转换:

CodigoBanco  =Convert.ToInt32(codigoBanco==""?null:codigoBanco)

将 returns 0 转换成你的整数? 属性

正如@Ralf 所建议的,我从 json 中删除了所有带有空字符串的属性。这解决了我的问题:

function removeEmptyOrNull(obj){
    Object.keys(obj).forEach(k =>
        (obj[k] && typeof obj[k] === 'object') && removeEmptyOrNull(obj[k]) ||
        (!obj[k] && obj[k] !== undefined) && delete obj[k]
    );
    return obj;
};

您有两种解决问题的方法:

  1. 指定null(非空串)即可映射成功。 codigoBanco: null 或从 client-side 中完全删除此 属性(默认值与 null 相同)

  2. 在 backend-side 处写入自定义转换,例如:

    CodigoBanco = int.Parse(codigoBanco == "" || codigoBanco.Length = 0 ? null : codigoBanco);