Web API参数绑定

时间:2012-11-21 15:57:44

标签: asp.net-web-api

我在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类型。

1 个答案:

答案 0 :(得分:6)

请记住,ParameterBindingRules检查控制器操作参数本身(在您的情况下为ComplexModel),参数的内容。您需要注册一个针对ComplexModel的参数绑定,并使用自定义绑定器进行任何处理以验证模型实例。看起来你最好不要让Guid属性为空,尽管你不愿意这样做。