我有一个Web API项目...我想尊重REST原则,所以我应该只有一个GET方法而只是一个POST方法...... 我必须进行搜索,所以我认为这与GET方法匹配,因为在搜索之后我获得结果并在页面中显示...如果我找不到任何东西我必须创建对象...这个动作是一个POST ...
现在我遇到了问题......我必须验证搜索的过滤器,因为过滤器是税码和字母数字代码(6个字符)...我已经完成了客户端验证。现在我应该进行服务器端验证。
直到现在,我们已经使用数据注释来验证请求,但这是一个GET ...所以我的方法有这个签名:
[HttpGet]
public IHttpActionResult GetActivationStatus(string taxCode, string requestCode)
{
if (ModelState.IsValid)
{
...
}
}
但是如何使用Data Annotation验证我的ModelState?
谢谢
答案 0 :(得分:9)
创建自己的模型......
public class YourModel
{
[//DataAnnotation ...]
public string taxCode { get; set; }
[//DataAnnotation ...]
public string requestCode { get; set; }
}
并更改服务器端控制器的签名:
[HttpGet]
public IHttpActionResult GetActivationStatus([FromUri] YourModel yourmodel)
{
if (ModelState.IsValid)
{
...
}
}
如果您的客户端代码已经运行,则无需更改...请注意,您的模型的属性与您现在传递的参数(string taxCode, string requestCode
)相同。 ..而且他们是区分大小写的......
修改强>: 我的意思是你可以用这种方式打电话给你的控制器: