Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过带有数据注释的ModelState验证GET url参数_C#_Validation_Rest_Asp.net Web Api_Data Annotations - Fatal编程技术网

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

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。。。因此,我的方法具有以下特征: [

我有一个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请求