如何通过带有数据注释的 ModelState 验证 GET url 参数
How to validate GET url parameters through ModelState with data annotation
我有一个 Web API 项目...我想尊重 REST 原则,所以我应该只有一个 GET 方法和一个 POST 方法...
我必须进行搜索,所以我认为这与 GET 方法匹配,因为在搜索之后我获得了结果并将其显示在页面中......如果我没有找到任何东西我必须创建对象......这个动作是 POST...
现在我遇到了问题...我必须验证搜索过滤器,因为过滤器是一个税码和一个字母数字代码(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
)。 .. 而且它们区分大小写...
编辑:
我的意思是你可以这样调用你的控制器:
我有一个 Web API 项目...我想尊重 REST 原则,所以我应该只有一个 GET 方法和一个 POST 方法... 我必须进行搜索,所以我认为这与 GET 方法匹配,因为在搜索之后我获得了结果并将其显示在页面中......如果我没有找到任何东西我必须创建对象......这个动作是 POST...
现在我遇到了问题...我必须验证搜索过滤器,因为过滤器是一个税码和一个字母数字代码(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
)。 .. 而且它们区分大小写...
编辑: 我的意思是你可以这样调用你的控制器: