C# 如何通过带有数据注释的ModelState验证GET url参数
我有一个Web API项目。。。我想尊重REST原则,所以我应该有一个GET方法和一个POST方法。。。 我必须进行搜索,所以我认为这与GET方法匹配,因为搜索后我获得了结果,并在页面中显示它。。。如果我找不到任何东西,我必须创建对象。。。这个动作是一个帖子 现在我有一个问题。。。我必须验证搜索的过滤器,因为过滤器是税码和字母数字码(6个字符)。。。我已经做了客户端验证。现在,我应该进行服务器端验证 直到现在,我们已经使用数据注释来验证请求,但这是一个GET。。。因此,我的方法具有以下特征:C# 如何通过带有数据注释的ModelState验证GET url参数,c#,validation,rest,asp.net-web-api,data-annotations,C#,Validation,Rest,Asp.net Web Api,Data Annotations,我有一个Web API项目。。。我想尊重REST原则,所以我应该有一个GET方法和一个POST方法。。。 我必须进行搜索,所以我认为这与GET方法匹配,因为搜索后我获得了结果,并在页面中显示它。。。如果我找不到任何东西,我必须创建对象。。。这个动作是一个帖子 现在我有一个问题。。。我必须验证搜索的过滤器,因为过滤器是税码和字母数字码(6个字符)。。。我已经做了客户端验证。现在,我应该进行服务器端验证 直到现在,我们已经使用数据注释来验证请求,但这是一个GET。。。因此,我的方法具有以下特征: [
[HttpGet]
public IHttpActionResult GetActivationStatus(string taxCode, string requestCode)
{
if (ModelState.IsValid)
{
...
}
}
但是如何用数据注释验证我的ModelState呢
谢谢您创建您自己的模型
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
)。。。而且它们区分大小写
编辑:
我的意思是,您可以通过以下方式调用控制器:
可能重复是的,我认为你是对的。。。但解决办法确实是不可靠的。。。你建议另一种验证方式吗?例如,“流畅的验证”可以帮助我吗?或者有一种方法可以通过GET传递一个复杂的对象?你传递的是原语。您希望如何在它们上验证模型状态?你要么制作一个模型并装饰它,要么做一个自定义的动作属性来验证动作参数。我不能做一个模型。。。这是一个GET请求