Asp.net web api 绑定int?如果值是非数字、非空字符串,则将属性设置为null

Asp.net web api 绑定int?如果值是非数字、非空字符串,则将属性设置为null,asp.net-web-api,Asp.net Web Api,我有一个属性类型为int?的viewmodel 如果发送值是整数或为空,则可以正常工作。当值为字符串时,将引发异常“无法将字符串转换为整数” 有没有可能改变绑定的行为,即绑定空值而不是抛出错误 我已经为typeof(int?)创建了一个modelbinder类,但是没有调用ModeBind函数。我猜验证发生在模型绑定之前 有什么想法吗?当你说你有一个视图模型时,你指的是传递给动作方法的参数吗?例如 publicfoobar(MyViewModel虚拟机) 如果是这样,那么modelbinder

我有一个属性类型为int?的viewmodel

如果发送值是整数或为空,则可以正常工作。当值为字符串时,将引发异常“无法将字符串转换为整数”

有没有可能改变绑定的行为,即绑定空值而不是抛出错误

我已经为typeof(int?)创建了一个modelbinder类,但是没有调用ModeBind函数。我猜验证发生在模型绑定之前


有什么想法吗?

当你说你有一个视图模型时,你指的是传递给动作方法的参数吗?例如

publicfoobar(MyViewModel虚拟机)

如果是这样,那么modelbinder应该是MyViewModel类型。您还可以使用ValueProvider从随机字符串中提取int,以覆盖默认的值提供程序功能。

如果您的公共API实际上允许该参数使用非数值,您只需将视图模型属性声明为
string
,而不是
int?
(以反映这一事实)然后自己执行从
string
int?
的最终映射。