Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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# 使用数据批注验证时未进入控制器_C#_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

C# 使用数据批注验证时未进入控制器

C# 使用数据批注验证时未进入控制器,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,我正在使用ASP.NET核心restful web API。我的问题是,我的控制器中有一个服务器验证来检查视图模型(Contact.cs)验证 但是,当我在控制器中测试我的POST操作CreateContact时,该操作从未被输入,但根据我的Contact.cs类中的数据注释,它被正确验证 我不明白为什么在进入控制器之前要进行验证。我认为,在WebAPI中,服务器验证将根据ModelState在Controller中进行检查。然后我的ModelState.IsValid检查似乎没有用 我的视图模

我正在使用ASP.NET核心restful web API。我的问题是,我的控制器中有一个服务器验证来检查视图模型(
Contact.cs
)验证

但是,当我在控制器中测试我的
POST
操作
CreateContact
时,该操作从未被输入,但根据我的
Contact.cs
类中的数据注释,它被正确验证

我不明白为什么在进入控制器之前要进行验证。我认为,在WebAPI中,服务器验证将根据
ModelState
Controller
中进行检查。然后我的
ModelState.IsValid
检查似乎没有用

我的视图模型:

public class Contact
{
    [Required]
    public int? Id { get; set; }
    [MaxLength(20)]
    public string FirstName { get; set; }
    // ...
}
我的控制器动作的一部分,从未输入

[Route("api/[controller]")]
[ApiController]
public class ContactsController : ControllerBase
{
    [HttpPost]
    public IActionResult CreateContact(ViewModels.Contacts.Contact contact)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        // ...
    }
 }
应用于控制器的规则具有某些约定。其中之一是在进入控制器操作之前自动验证传递的模型

因此,这有效地消除了在每个方法中检查
ModelState.IsValid
的需要

您可以阅读有关
ApiController
属性以及这两个属性的更多信息,这两个属性还包括该属性包含的其他约定

如果您不希望出现这种行为,并且仍然希望能够在控制器操作中手动执行此操作,请签出