如何将null传递给asp.net core 3.1中的终结点 - c#

我在asp.net core 3.1控制器中有以下操作

[ApiController]
[Route("example")]
public class MyExampleController : ControllerBase
{
    [HttpPost("{id}/value")]
    public async Task<IActionResult> Post(string id, [FromBody] int? value)
      => Task.FromResult(Ok());
}

如果我发布int的正文值(例如:12等),则效果很好

但是,我找不到一种方法来传递null值。

如果我传入一个空的正文或null正文,则会返回状态码400,并返回验证消息A non-empty request body is required.

我还尝试将value参数更改为默认值null的可选参数:

public async Task<IActionResult> Post(string id, [FromBody] int? value = null)

如何将null传递给此操作?

参考方案

终于弄明白了,非常感谢@Nkosi和@KirkLarkin帮助错误找到了这个。

Startup.cs中,将控制器配置到容器中时,我们只需要将默认的mvc选项更改为AllowEmptyInputInBodyModelBinding

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers(x => x.AllowEmptyInputInBodyModelBinding = true);
}

这样,我们可以将null传递到帖子的正文中,并且效果很好。它还仍然通过属性应用普通模型验证,而无需手动检查ModelState:

public async Task<IActionResult> Post(string id,
        [FromBody][Range(1, int.MaxValue, ErrorMessage = "Please enter a value bigger than 1")]
        int? value = null)

ASP.NET Core-在Singleton注入上存储库依赖项注入失败 - c#

我正在使用SoapCore为我的ASP.NET Core MVC应用程序创建Web服务。我正在使用Entity Framework Core和简单的存储库模式来获取我的数据库数据。我通过Startup.cs中的.AddSingleton()注入存储库类:services.AddSingleton<IImportRepository, ImportRep…

如何在ASP.NET Core Web应用程序中增加JSON反序列化MaxDepth限制 - c#

我们正在将ASP.NET Core 2.1与.NET Framework 4.6.2结合使用。我们有一个客户需要向我们的Web应用程序发送一个很大程度上嵌套的json结构。当他们进行此调用时,我们将输出以下日志并返回错误: 读取器的MaxDepth超过了32。路径“ super.long.path.to property”,第1行,位置42111。”我浏览了…

在ASP.NET Core 2.1中添加自定义TagHelpers - c#

我严格按照ASP.NET Core文档进行操作,并花费了大量时间来拖曳堆栈溢出,试图实现简单的自定义TagHelper,但没有成功。任何人都可以就任何陷阱或已知错误提出建议吗?应用程序属性:AssemblyName: AmpWeb Target Framework .NET Core 2.1 NuGet软件包Microsoft.AspNetCore.All …

ASP.NET Core 2.0中的多个身份 - c#

我正在将ASP.NET Core 1.0应用程序迁移到ASP.NET Core 2.0。在我的启动中,我正在配置两个身份:services.AddIdentity<IdentityUser, IdentityRole>(configureIdentity) .AddDefaultTokenProviders() .AddUserStore<…

如何基于框架执行不同的动作? (ASP.NET 5) - c#

假设您必须将C#应用程序从.NET框架迁移到新的.NET Core,因为您希望拥有其中的一些新功能。您拥有自己的代码库,并且希望一次获得完整的工作部件,因为一次迁移所有的工作量很大。主要思想是成为未来的完全核心。我的问题是:有没有一种方法可以检查一个框架中存在但另一个框架中没有的功能?还是根据框架执行不同的动作? 参考方案 有编译器指令(#if)来检查与两个…