查询参数Web API上的自定义验证属性

时间:2018-06-21 14:22:22

标签: asp.net-web-api custom-attributes validationattribute

我有以下控制器,它以字符串格式的引导作为查询参数。

在执行该方法之前,我想验证它们是否为有效的GUID,但是我不确定如何触发我的自定义ValidationAttribute:

controller.cs

public async Task<Profile> GetProfile([ValidGuid] string id)
{
    ...
}

ValidGuidAttribute.cs

internal class ValidGuidAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        try
        {
            Guid.Parse(value.ToString());
            return true;
        }
        catch (Exception e)
        {
            throw new InvalidIdException($"{value.ToString()} is an invalid id");
        }
    }
}

任何指出如何触发我的IsValid方法的帮助将不胜感激。