是否可以为ASP.NET中的区域设置自定义序列化器



我正在尝试配置一个区域,以在ASP.NET项目中为新创建的区域使用一些自定义的JSON Serializer设置。我正在编写Web API控制器。

不幸的是,我不能影响整个项目(很多旧的代码),否则我刚刚完成:

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

但是我可以更改这个新区域,但是我认为合适。

是否可以以与上面的代码相似的方式配置这个新区域(还有其他我不希望受到影响的区域)?

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

示例:

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);
    }
}

相关内容

  • 没有找到相关文章

最新更新