Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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# 获取参数use FromUri并验证此参数_C#_Asp.net_.net 4.5 - Fatal编程技术网

C# 获取参数use FromUri并验证此参数

C# 获取参数use FromUri并验证此参数,c#,asp.net,.net-4.5,C#,Asp.net,.net 4.5,我使用[FromUri]获取web api操作中的参数,例如: public TestController { public ActionResult TestMethod([FromUri] int testParamFromUri) { //here is my validation if(testParamFromUri < 1 || testParamFromUri > 50) { thr

我使用
[FromUri]
获取web api操作中的参数,例如:

public TestController
{
    public ActionResult TestMethod([FromUri] int testParamFromUri)
    {
        //here is my validation
        if(testParamFromUri < 1 || testParamFromUri > 50)
        {
            throw new TestException();
        }

        //other code
    }
}
但这种方式对我不起作用。 请告诉我哪里错了,或者告诉我应该如何验证输入参数


p、 我需要使用
[FromUri]
属性获取输入参数,并使用其他属性验证此参数。

您可以使用
testParamFromUri
属性创建
输入
模型,并使用
范围
属性验证它:

public class TestController : ApiController
{
    public IHttpActionResult TestMethod([FromUri]Input input)
    {
        if (!ModelState.IsValid)
            return BadRequest(ModelState);

        //other code

        return Ok();
    }
}

public class Input
{
    [Range(1, 50, ErrorMessage = "Error Message")]
    public int testParamFromUri { get; set; }
}

范围用于类属性,而不是方法参数。您可以在TestMethod中使用if语句进行验证。@RicardoPantual我想我可以为验证输入参数创建属性,或者这是不可能的?您可以,但在方法中进行验证或简单地将类作为参数进行验证更容易,所以您可以在类中使用DataAnnotation。像这样:公共类Param{[Range(1,50,ErrorMessage=“Error Message”)]public int testParamFromUri{get;set;}}和public IHttpActionResult TestMethod([FromUri]Param testParamFromUri)@RicardoPontual,是的,我知道这种方法,但我需要为uri参数使用属性,比如int/long/string谢谢你的回答,是的,我知道。但我需要使用的参数不像model@netwer您可以像
http://server/api/Test/54
使用此型号。是否有其他限制不允许您使用该模型?我的请求是:etc。我需要输入参数的可重用属性之类的东西,因为我认为为我的其他api方法创建模型并不好。另外,其他方法有一个或两个输入参数
public class TestController : ApiController
{
    public IHttpActionResult TestMethod([FromUri]Input input)
    {
        if (!ModelState.IsValid)
            return BadRequest(ModelState);

        //other code

        return Ok();
    }
}

public class Input
{
    [Range(1, 50, ErrorMessage = "Error Message")]
    public int testParamFromUri { get; set; }
}