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; }
}