gpt4 book ai didi

c# - 是否允许内联属性验证器?

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:49 24 4
gpt4 key购买 nike

在创建 webApi Controller 时,传递的唯一参数是字符串,我可以为“必需”或“字符串长度”应用验证器属性吗?

这似乎对我不起作用......

Controller Action 示例:

[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 为假。

顺便说一句 - 如果我改为构造一个 Controller 操作来接受对象而不是字符串,并且如果我将属性验证器放在类的属性上,那么验证将按预期工作,并且 ModelState.IsValid 显示错误的。仅当尝试使用内联属性验证器时,如我上面的示例,其中 ModelState.IsValid 显示意外结果。

最佳答案

您回答了您自己的问题,因为它不起作用。但是,属性用法定义为

[AttributeUsageAttribute(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]

既然参数是允许的,它似乎可以工作但显然不行。现在您可以创建自己的操作属性,然后可以从中强制执行验证。

关于c# - 是否允许内联属性验证器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49677104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com