【发布时间】:2018-09-15 13:20:38
【问题描述】:
在创建 webApi 控制器时,传递的唯一参数是字符串,我可以为“必需”或“字符串长度”应用验证器属性吗?
这似乎对我不起作用...
控制器动作示例:
[HttpPost]
[ActionName("GetInventoryDetails")]
public HttpResponseMessage GetInventoryDetails([FromBody][Required][StringLength(20)]string serialNumber)
{
if (ModelState.IsValid == true)
{
var response = Request.CreateResponse(statusCode: HttpStatusCode.OK, value: string.Empty, mediaType: Request.Content.Headers.ContentType);
return response;
}
else
{
var response = Request.CreateResponse(statusCode: HttpStatusCode.BadRequest);
return response;
}
}
当我传入一个长度超过 20 个字符的字符串时,ModelState.IsValid 为真。此外,如果我不传递任何参数 ModelState.IsValid 也是如此。在这两种情况下,我都认为ModelState.IsValid 是错误的。
顺便说一句 - 如果我构造一个控制器操作来接受一个对象而不是一个字符串,并且如果我将属性验证器放在类的属性上,那么验证会按预期工作,ModelState.IsValid 显示为 false。只有在我上面的示例中尝试使用内联属性验证器时,ModelState.IsValid 才会显示意外结果。
【问题讨论】:
-
我认为你的最后一段几乎回答了你的问题,不是吗?
-
好吧,我不确定我是否回答了自己的问题。也许我做得不对。如果以不同的方式完成,也许它会起作用......
-
您可以在此处阅读如何自己实现它:blog.markvincze.com/…
-
@Evk - 不幸的是,我的公司屏蔽了您推荐的网站... :(
标签: c# asp.net-mvc validation asp.net-web-api modelstate