Asp.Net Core Mvc上的首字母大小写的问题
2016-11-14 18:03
375 查看
本次在使用的使用采用前后端开发,因此在前段已完成UI设计以及按照RAP来完成数据的模拟获取的情况下,后台返回字段出现了json数据的默认格式化。
这就很头疼了,再让前端再去改明显会浪费很多的时间,因此决定解决这个问题。
首先上网搜索信息,在网上只查到了asp.net webapi的解决方案,但是也为我大概指明了方向。
这是解决方案的代码:
public static class WebApiConfig {
我们需要做的就是将mvc的序列化装换器设置成DefaultContractResolver;
那接下来就把从Core中来实现这个问题:
首先从mvc来判断应该在AddMvc方法中进行数据操作,那接下来接续为其按上述步骤设置
首先添加一个新的JsonJsonSerializerSettings,将ContractResolver 设置成DefaultContractResolver ,并将生成一个的JsonOutputFormatter格式器来存放
为了防止其他的格式器影响结构将所有的格式器,只剩下该格式器来序列化json数据。
并将新生成的JsonOutputFormatter插入到第一个。
结果返回json数据仍存在问题,这就郁闷了,经过多次测试依旧出现问题。
那就试试另一种方式:
在模型类中为模型参数指明JsonProperty参数名试试,看数据是否仍旧会被格式化掉。
结果在单一数据指明JsonProperty之后返回字段终于解决了。但是这样的方式只能是一种替代方案,在本质上仍然未解决问题,于是我决定继续解决这个问题。
按照第一次的思路来说问题应该没有问题,但是为什么不能解决问题呢。继续bing查资料吧。。。 终于找到了明灯:https://q.cnblogs.com/q/85812 额,感觉没天理了。。。
问题出在Asp.Net Core 和 Asp.Net一样已经为我们集成好了这些配置。
我们只需要在services.AddMvc().AddJsonOptions()中设置ContractResolver 即可。代码非常简单:
*这个问题花了很久时间解决,但是感觉很值,特别是看到最后的问题的时候感觉自己豁然开朗的感觉。问题很简单,但是每一步都花费了自己很多心思。
这就很头疼了,再让前端再去改明显会浪费很多的时间,因此决定解决这个问题。
首先上网搜索信息,在网上只查到了asp.net webapi的解决方案,但是也为我大概指明了方向。
这是解决方案的代码:
public static class WebApiConfig {
public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); // 取消注释下面的代码行可对具有 IQueryable 或 IQueryable<T> 返回类型的操作启用查询支持。 // 若要避免处理意外查询或恶意查询,请使用 QueryableAttribute 上的验证设置来验证传入查询。 // 有关详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=279712。 //config.EnableQuerySupport(); // 若要在应用程序中禁用跟踪,请注释掉或删除以下代码行 // 有关详细信息,请参阅: http://www.asp.net/web-api config.EnableSystemDiagnosticsTracing(); // 干掉XML序列化器 config.Formatters.Remove(config.Formatters.XmlFormatter); // 解决json序列化时的循环引用问题 config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; // 对 JSON 数据使用混合大小写。驼峰式,但是是javascript 首字母小写形式. //config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); // 对 JSON 数据使用混合大小写。跟属性名同样的大小.输出 config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver(); } }
我们需要做的就是将mvc的序列化装换器设置成DefaultContractResolver;
那接下来就把从Core中来实现这个问题:
首先从mvc来判断应该在AddMvc方法中进行数据操作,那接下来接续为其按上述步骤设置
首先添加一个新的JsonJsonSerializerSettings,将ContractResolver 设置成DefaultContractResolver ,并将生成一个的JsonOutputFormatter格式器来存放
为了防止其他的格式器影响结构将所有的格式器,只剩下该格式器来序列化json数据。
并将新生成的JsonOutputFormatter插入到第一个。
services.AddMvc(options => { var JsonSerializerSettings = new JsonSerializerSettings(); JsonSerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; JsonSerializerSettings.ContractResolver = new DefaultContractResolver(); var jsonOutputFormatter = new JsonOutputFormatter(JsonSerializerSettings, ArrayPool<char>.Shared); options.OutputFormatters.RemoveType<JsonOutputFormatter>(); options.OutputFormatters.RemoveType<TextOutputFormatter>(); options.OutputFormatters.RemoveType<HttpNoContentOutputFormatter>(); options.OutputFormatters.Insert(0, jsonOutputFormatter); });
结果返回json数据仍存在问题,这就郁闷了,经过多次测试依旧出现问题。
那就试试另一种方式:
在模型类中为模型参数指明JsonProperty参数名试试,看数据是否仍旧会被格式化掉。
[JsonProperty("EntrustId")] public uint EntrustId { get; set; }
结果在单一数据指明JsonProperty之后返回字段终于解决了。但是这样的方式只能是一种替代方案,在本质上仍然未解决问题,于是我决定继续解决这个问题。
按照第一次的思路来说问题应该没有问题,但是为什么不能解决问题呢。继续bing查资料吧。。。 终于找到了明灯:https://q.cnblogs.com/q/85812 额,感觉没天理了。。。
问题出在Asp.Net Core 和 Asp.Net一样已经为我们集成好了这些配置。
我们只需要在services.AddMvc().AddJsonOptions()中设置ContractResolver 即可。代码非常简单:
services.AddMvc().AddJsonOptions(options=>{ options.SerializerSettings.ContractResolver = new DefaultContractResolver(); });
*这个问题花了很久时间解决,但是感觉很值,特别是看到最后的问题的时候感觉自己豁然开朗的感觉。问题很简单,但是每一步都花费了自己很多心思。
相关文章推荐
- Asp.Net Core Mvc上Json序列化首字母大小写的问题
- ASP.NET Core解决MVC视图中的中文被html编码的问题
- asp.net mvc中 路径大小写问题
- 解决ASP.NET Core Mvc文件上传限制问题
- 解决ASP.NET Core Mvc文件上传限制问题
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- ASP.net中传值中的字母大小写问题
- 解决ASP.NET Core Mvc文件上传限制问题实例
- 解决ASP.NET Core Mvc文件上传限制问题
- 解决ASP.NET Core Mvc文件上传限制问题
- 解决ASP.NET Core Mvc文件上传限制问题实例
- 总结一下ASP.NET MVC 网站的部署问题
- 微软ASP.NET官方网站MVC教程实际操作中的部分问题
- ASP.NET MVC中重写IAuthorizationFilter的需要注意的问题
- 中文VS2008中安装ASP.NET MVC框架出现问题的解决方法
- asp.net mvc 1中ActionFilter的执行层级问题
- 中文VS2008中安装ASP.NET MVC框架出现问题的解决方法
- ASP.net MVC 部署问题
- asp.net mvc 环境配置问题