相关疑难解决方法(0)

ASP.NET MVC 6上每个控制器的特定JSON设置

我需要在ASP.NET MVC 6 webApi中为每个控制器设置特定的JSON设置.我发现这个样本(我希望!)适用于MVC 5: 在ASP.NET WebAPI Per Controller上强制使用CamelCase

using System;
using System.Linq;
using System.Web.Http.Controllers;
using System.Net.Http.Formatting;
using Newtonsoft.Json.Serialization;

public class CamelCaseControllerConfigAttribute : Attribute, IControllerConfiguration 
{
    public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
    {
        var formatter = controllerSettings.Formatters.OfType<JsonMediaTypeFormatter>().Single();
        controllerSettings.Formatters.Remove(formatter);

        formatter = new JsonMediaTypeFormatter
        {
            SerializerSettings = {ContractResolver = new CamelCasePropertyNamesContractResolver()}
        };

        controllerSettings.Formatters.Add(formatter);

    }
}
Run Code Online (Sandbox Code Playgroud)

c# configuration json.net asp.net-core-mvc asp.net-core

13
推荐指数
2
解决办法
4757
查看次数

更改单个 ASP.NET Core API 控制器或 ASP.NET Core 3 中单个操作的 System.Text.Json 序列化选项

我有两个控制器:ControllerA 和 ControllerB。每个控制器的基类是ControllerBase。

ControllerA默认需要反序列化JSON

JsonSerializerOptions.IgnoreNullValues = false;
Run Code Online (Sandbox Code Playgroud)

ControllerB 需要使用选项反序列化 JSON

JsonSerializerOptions.IgnoreNullValues = true;
Run Code Online (Sandbox Code Playgroud)

我知道如何在 Startup.cs 中全局设置此选项

services.AddControllers().AddJsonOptions( options => options.JsonSerializerOptions.IgnoreNullValues = true);
Run Code Online (Sandbox Code Playgroud)

但是如何为 Controller 或 Action 设置特定的反序列化选项呢?(ASP.NET Core 3 API)

c# deserialization asp.net-core system.text.json

8
推荐指数
1
解决办法
3833
查看次数

将 JSON 序列化从 CamelCase 更改为 PascalCase [重复 - 无解决方案?]

我知道这与过去的一些问题重复。但没有真正的解决方案。

\n\n

相关链接之一

\n\n

另一个

\n\n

我正在使用 .Net Core 3 多页模板。\n我已经尝试了如下所示的所有操作。但没有用。

\n\n

这是我的应用程序项目的界面:

\n\n
using System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Abp.Application.Services;\nusing Abp.Application.Services.Dto;\nusing TSE.Kalibrasyon.Roles.Dto;\nusing TSE.Kalibrasyon.Users.Dto;\n\nnamespace TSE.Kalibrasyon.Labs\n{\n    public interface ILabAppService : IApplicationService\n    {\n        string Test();\n        Task<List<Entities.Labs.Labs>> GetAllAsync();\n        System.Threading.Tasks.Task Update(Entities.Labs.Labs input);\n        System.Threading.Tasks.Task Create(Entities.Labs.Labs input);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

其实现是:

\n\n
using System.Collections.Generic;\nusing System.Linq;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\nusing Abp.Application.Services;\nusing Abp.Application.Services.Dto;\nusing Abp.Authorization;\nusing Abp.Domain.Entities;\nusing Abp.Domain.Repositories;\nusing Abp.Extensions;\nusing Abp.IdentityFramework;\nusing Abp.Linq.Extensions;\nusing Abp.Localization;\nusing Abp.Runtime.Session;\nusing Abp.UI;\nusing TSE.Kalibrasyon.Authorization;\nusing TSE.Kalibrasyon.Authorization.Accounts;\nusing TSE.Kalibrasyon.Authorization.Roles;\nusing TSE.Kalibrasyon.Authorization.Users;\nusing TSE.Kalibrasyon.Roles.Dto;\nusing TSE.Kalibrasyon.Users.Dto;\nusing Microsoft.AspNetCore.Identity;\nusing Microsoft.EntityFrameworkCore;\nusing TSE.Kalibrasyon.Entities.Labs.Dto;\nusing TSE.Kalibrasyon.Entities.Labs;\nusing TSE.Kalibrasyon.Labs.Dto;\nusing Abp.Web.Models;\nusing Newtonsoft.Json;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace TSE.Kalibrasyon.Labs\n{\n    //[AbpAuthorize(PermissionNames.Pages_Users)]\n    public class LabAppService : KalibrasyonAppServiceBase, …
Run Code Online (Sandbox Code Playgroud)

aspnetboilerplate

6
推荐指数
2
解决办法
2万
查看次数

更改单个 ASP.NET Core 控制器的 JSON 反序列化/序列化策略

我有一个用于第三方 API 的控制器,它使用蛇形命名约定。我的控制器的其余部分用于我自己的应用程序,该应用程序使用驼峰式 JSON 约定。我想自动反序列化和序列化我的模型从/到蛇案例为该控制器中的API。这个问题解释了如何在整个应用程序中使用 JSON 的蛇形命名策略,但是有没有一种方法可以指定仅对单个控制器使用命名策略?

我见过更改单个 ASP.NET Core 控制器的 JSON 序列化设置,它建议使用 ActionFilter,但这仅有助于确保传出的 JSON 正确序列化。如何将传入的 JSON 正确反序列化到我的模型?我知道我可以[JsonPropertyName]在模型属性名称上使用,但我更希望能够在控制器级别而不是模型级别设置某些内容。

c# json asp.net-core

5
推荐指数
1
解决办法
1956
查看次数