gpt4 book ai didi

jquery - webapi mvc4 所需的注释对于整数属性失败,但对于字符串有效

转载 作者:行者123 更新时间:2023-12-03 23:04:38 28 4
gpt4 key购买 nike

当我进行 ajax 调用时,它失败并出现 500 内部服务器错误

Value-typed properties marked as [Required] must also be marked with [DataMember(IsRequired=true)]

问题出在 CallerID 属性上。

[Required]
public string AccountTypeID { get; set; }

[Required]
public int CallerID { get; set; }

如果我将 CallerID 标记为字符串,则一切正常。
有什么想法吗?

最佳答案

这是 Web API 中的一个已知问题,您可以在此处查看整个历史记录: http://aspnetwebstack.codeplex.com/workitem/270

基本上,如果将 [Required] 应用于值类型(例如 bool 或 int,字符串不是值类型),则会导致此错误。

您还需要考虑一下 - 您正在使 int 成为必需的属性 - 但作为值类型,它始终具有值, value=0 即使它不是由用户传递的。也许您正在考虑 int?

您可以完全删除 InvalidModelValidatorProvider (但这可能 Not Acceptable ):

config.Services.RemoveAll(
typeof(System.Web.Http.Validation.ModelValidatorProvider),
v => v is InvalidModelValidatorProvider);

或者只是将 DataContract 应用于您的类:

[DataContract]
public class MyClass {

[DataMember(isRequired=true)]
public string AccountTypeID { get; set; }

[DataMember(isRequired=true)]
public int CallerID { get; set; }
}

另一种解决方法是将 int 标记为可为空:

[Required]
public int? CallerID { get; set; }

关于jquery - webapi mvc4 所需的注释对于整数属性失败,但对于字符串有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225835/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com