Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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
Macos 使用Mac VS.NET上不起作用的数据注释进行模型验证_Macos_Rest_Asp.net Core - Fatal编程技术网

Macos 使用Mac VS.NET上不起作用的数据注释进行模型验证

Macos 使用Mac VS.NET上不起作用的数据注释进行模型验证,macos,rest,asp.net-core,Macos,Rest,Asp.net Core,我用VS.NET在MacOS上创建了一个新的Web API应用程序。我添加了一个具有以下代码的模型: 公共类PersonAddRequest{ [必需] 公共字符串名{get;set;} 公共字符串LastName{get;set;} } 然后我创建了一个Web API控制器,如下所示: [路由(“api/[控制器]”)] [ApiController] 公共类人员控制器:ControllerBase{ [HttpPost] 公共IActionResult帖子(PersonalAddressR

我用VS.NET在MacOS上创建了一个新的Web API应用程序。我添加了一个具有以下代码的模型:

公共类PersonAddRequest{
[必需]
公共字符串名{get;set;}
公共字符串LastName{get;set;}
}
然后我创建了一个Web API控制器,如下所示:

[路由(“api/[控制器]”)]
[ApiController]
公共类人员控制器:ControllerBase{
[HttpPost]
公共IActionResult帖子(PersonalAddressRequest模型){
返回基地。Ok(型号);
}
}
当使用PostMan时,我也同样发布JSON(注意缺少firstName):

当我在Windows操作系统上创建的Web API应用程序上运行此代码时,验证工作正常。但是,当我在MacOS中创建项目时,验证不起作用

当我在Windows操作系统中创建项目,然后在MacOS上打开并运行它时,验证工作正常


因此,我的问题是,这是不是作为Mac版VS.NET支架的一部分而缺少的功能?

您需要body参数的
FromBody
属性:

[路由(“api/[控制器]”)]
[ApiController]
公共类PeopleController:控制器
{
[HttpPost]
公共IActionResult帖子([FromBody]个人地址请求模型)
{
返回Ok(型号);
}
}
这是模型验证所必需的


使用在MacOS Mojave 10.14.4上确认的这种形式的模型验证,您需要body参数的
FromBody
属性:

[路由(“api/[控制器]”)]
[ApiController]
公共类PeopleController:控制器
{
[HttpPost]
公共IActionResult帖子([FromBody]个人地址请求模型)
{
返回Ok(型号);
}
}
这是模型验证所必需的


使用在MacOS Mojave 10.14.4上确认的这种形式的模型验证,我要感谢@Nelsonturan帮助我在Mac上探索VS.NET。我实际上正在运行Mac的更高版本(10.14.5 Mojave)。然而,版本与原始问题无关

通过患者和@Nelsonturan的持续帮助,我重新创建了该项目,但我没有使用建议的模板,而是在正确的应用程序中挖掘了一些模板(不要相信VS.NET中建议的应用程序)。以下是有关如何创建自动执行模型验证的API的分步说明:

  • 开放VS.NET for Mac
  • 创建新项目
  • 当提示“为新项目选择模板”时,请在左侧窗格的“.Net Core”部分下选择“应用程序”
  • 在右侧窗格中,选择API
  • 从那里你可以回顾一下模型验证的魔力

    我相信我选择“Web应用程序”可能是因为我认为它在Mac和Windows中是一样的

    我的一个简单疏忽。我希望这能帮助像我一样困惑和挣扎的人


    再次感谢@Nelsonturan

    我要感谢@Nelsonturan帮助我在Mac上探索VS.NET。我实际上正在运行Mac的更高版本(10.14.5 Mojave)。然而,版本与原始问题无关

    通过患者和@Nelsonturan的持续帮助,我重新创建了该项目,但我没有使用建议的模板,而是在正确的应用程序中挖掘了一些模板(不要相信VS.NET中建议的应用程序)。以下是有关如何创建自动执行模型验证的API的分步说明:

  • 开放VS.NET for Mac
  • 创建新项目
  • 当提示“为新项目选择模板”时,请在左侧窗格的“.Net Core”部分下选择“应用程序”
  • 在右侧窗格中,选择API
  • 从那里你可以回顾一下模型验证的魔力

    我相信我选择“Web应用程序”可能是因为我认为它在Mac和Windows中是一样的

    我的一个简单疏忽。我希望这能帮助像我一样困惑和挣扎的人


    再次感谢@Nelsonturan

    我只是尝试添加[FromBody],但没有成功。请记住,这是MacOS上的VS.NET。Windows操作系统机器上的VS.NET按预期工作。验证是自动处理的。在Windows上创建项目时,无需使用ModelState.IsValid。但是如果这个项目是在MacOS上创建的,那么你提供的代码就不起作用了。我已经在Linux上测试过了,我回家后会看看它在mac上是如何工作的。在mac@Nelsonturan?@OneClutteredMind上测试过吗?我可以确认
    [FromBody]
    足以在MacOS 10.14.4上工作。你能创建一个新的webapi
    dotnet新的webapi
    并再次测试它并确认它不工作吗?另外,
    dotnet--version
    @OneClutteredMind web应用程序是什么?如果不需要FirstName,它将返回验证错误。我只是尝试添加[FromBody],但没有成功。请记住,这是MacOS上的VS.NET。Windows操作系统机器上的VS.NET按预期工作。验证是自动处理的。在Windows上创建项目时,无需使用ModelState.IsValid。但是如果这个项目是在MacOS上创建的,那么你提供的代码就不起作用了。我已经在Linux上测试过了,我回家后会看看它在mac上是如何工作的。在mac@Nelsonturan?@OneClutteredMind上测试过吗?我可以确认
    [FromBody]
    足以在MacOS 10.14.4上工作。你能创建一个新的webapi
    dotnet新的webapi
    并再次测试它并确认它不工作吗?另外,如果不需要FirstName,则返回验证错误的
    dotnet--version
    @OneClutteredMind web应用程序是什么
    {
       "lastName":"McDonalds"
    }