【发布时间】:2020-03-27 03:23:43
【问题描述】:
最近我决定从 ASP.NET Core 2.2 升级到 ASP.NET Core 3.1,并没有预料到所有的重大变化;我的应用程序的几乎每个部分都损坏了,因为大多数部分都依赖 JSON。
为了防止未来出现与 JSON 相关的问题,是否可以创建一个接口,模仿当前的 Json 实现并覆盖默认行为。
我的大部分代码都依赖于这两种方法:
Json.Serialize() // used in my razor
Json() // returns an IActionResult
用例:Razor 页面:Json.Serialize Doc
<script>
var myModel = @Html.Raw(Json.Serialize(Model))
</script>
用例:控制器
public async Task<IActionResult> AjaxGetRoleDetails(int id)
{
return Json(await GetUserRoles(id));
}
当分别调用上述方法时,这是我想要的方法。
JsonConvert.SerializeObject() // override Json.Serialize
Content(JsonConvert.SerializeObject(), new MediaTypeHeaderValue("application/json")) // override Json()
如何覆盖系统实现,并调用我自己的实现 目前,当 ASP.NET 确定 JSON 实现时,可以轻松恢复到系统的实现。
【问题讨论】:
-
不,这并不能回答问题,因为我能够找到该选项,我的问题是我所有的 json 字段最终都是小写的,并且可以很容易地转换每个方法调用.但由于这是一个糟糕的选择,我正在寻找一种拥有全局设置的方法。选项确实存在,但不完全清楚选项应该是什么。 DefaultContractResolver() 是保留大小写的方法,而 CamelCasePropertyNamesContractResolver 生成所有小写。这听起来很奇怪,因为它是。
标签: c# asp.net-core