Macos 使用Mac VS.NET上不起作用的数据注释进行模型验证
我用VS.NET在MacOS上创建了一个新的Web API应用程序。我添加了一个具有以下代码的模型: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
公共类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的分步说明:
再次感谢@Nelsonturan 我要感谢@Nelsonturan帮助我在Mac上探索VS.NET。我实际上正在运行Mac的更高版本(10.14.5 Mojave)。然而,版本与原始问题无关 通过患者和@Nelsonturan的持续帮助,我重新创建了该项目,但我没有使用建议的模板,而是在正确的应用程序中挖掘了一些模板(不要相信VS.NET中建议的应用程序)。以下是有关如何创建自动执行模型验证的API的分步说明:
再次感谢@Nelsonturan 我只是尝试添加[FromBody],但没有成功。请记住,这是MacOS上的VS.NET。Windows操作系统机器上的VS.NET按预期工作。验证是自动处理的。在Windows上创建项目时,无需使用ModelState.IsValid。但是如果这个项目是在MacOS上创建的,那么你提供的代码就不起作用了。我已经在Linux上测试过了,我回家后会看看它在mac上是如何工作的。在mac@Nelsonturan?@OneClutteredMind上测试过吗?我可以确认
[FromBody]
足以在MacOS 10.14.4上工作。你能创建一个新的webapidotnet新的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上工作。你能创建一个新的webapidotnet新的webapi
并再次测试它并确认它不工作吗?另外,如果不需要FirstName,则返回验证错误的dotnet--version
@OneClutteredMind web应用程序是什么
{
"lastName":"McDonalds"
}