我在Web Api控制器中有这个动作:
public Data GetData(ComplexModel model)
和模型是
class ComplexModel
{
Guid Guid1 { get; set;}
Guid Guid2 { get; set;}
string String1 { get; set;}
}
我想为Guid类型指定自定义绑定器,例如空字符串或null将绑定到空guid并且不想使用可空类型。试图像这样注册模型绑定器:
var pb = configuration.ParameterBindingRules;
pb.Insert(0, typeof(Guid), param => param.BindWithModelBinding(new GuidBinder()));
但它没有被调用,我得到了无效的模型状态,错误消息是空字符串无法转换为Guid类型。
答案 0 :(得分:6)
请记住,ParameterBindingRules
检查控制器操作参数本身(在您的情况下为ComplexModel
),不参数的内容。您需要注册一个针对ComplexModel
的参数绑定,并使用自定义绑定器进行任何处理以验证模型实例。看起来你最好不要让Guid
属性为空,尽管你不愿意这样做。