gpt4 book ai didi

c# - 是否可以为 ASP.Net 中的区域设置自定义序列化程序?

转载 作者:太空狗 更新时间:2023-10-30 01:15:32 25 4
gpt4 key购买 nike

我正在尝试配置一个区域,以便为 ASP.Net 项目中新创建的区域使用一些自定义 JSON 序列化程序设置。我正在编写一个 Web API Controller 。

不幸的是,我不能影响整个项目(很多遗留代码),否则我会这样做:

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
json.SerializerSettings.Converters = new List<JsonConverter>() { new StringEnumConverter() };

但我可以根据需要更改这个新区域。

是否有可能以与上述代码类似的方式配置这个新区域(还有其他我不想影响的区域)?

最佳答案

  1. 创建一个继承自 JsonResult 的类。编写逻辑以在此类中实现所需的序列化程序。
  2. 创建一个基 Controller 类并覆盖 Json 方法以返回您的自定义 JsonResult
  3. 最后,更改您区域内的所有 Controller 以继承自自定义 BaseController

示例:

public abstract class BaseController : Controller
{
protected override JsonResult Json(object data, string contentType, Encoding contentEncoding, JsonRequestBehavior behavior)
{
return new MySpecialJsonResult //Inherits from JsonResult and contains the desired serializer implementation
{
Data = data,
ContentType = contentType,
ContentEncoding = contentEncoding,
JsonRequestBehavior = behavior
};
}
}

public class EmployeeController : BaseController
{
public JsonResult Index()
{
//Your custom serializer will be used...
return Json(new{Text="Hello"},JsonRequestBehavior.AllowGet);
}
}

关于c# - 是否可以为 ASP.Net 中的区域设置自定义序列化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37865731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com