如何通过带有数据注释的ModelState验证GET url参数

Sim*_*one 10 c# validation rest data-annotations asp.net-web-api

我有一个Web API项目...我想尊重REST原则,所以我应该只有一个GET方法,只需要一个POST方法......我必须进行搜索,所以我认为这与GET方法匹配,因为在搜索之后我获得了结果并且我在页面中显示...如果我没有找到任何东西我必须创建对象...这个动作是一个POST ...

现在我有一个问题......我必须验证搜索的过滤器,因为过滤器是税码和字母数字代码(6个字符)...我已经完成了客​​户端验证.现在我应该进行服务器端验证.

直到现在,我们已经使用数据注释来验证请求,但这是一个GET ...所以我的方法有这个签名:

[HttpGet]
public IHttpActionResult GetActivationStatus(string taxCode, string requestCode)
{
    if (ModelState.IsValid)
    {
         ...
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如何使用Data Annotation验证我的ModelState?

谢谢

Cic*_*cio 11

创建自己的模型......

public class YourModel 
{
    [//DataAnnotation ...]
    public string taxCode { get; set; }
    [//DataAnnotation ...]
    public string requestCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并更改服务器端控制器的签名:

[HttpGet]
public IHttpActionResult GetActivationStatus([FromUri] YourModel yourmodel)
{
    if (ModelState.IsValid)
    {
         ...
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您的客户端代码已经工作,您不必更改它...请注意,您的模型的属性与您现在传递的参数相同(string taxCode, string requestCode)...并且它们区分大小写...

编辑:我的意思是你可以这样调用你的控制器:

HTTP://本地主机/ API /值/ taxCode = XXXX&requestCode = YYYY