c# - 从控制器获取 JsonOptions
问题描述
我在 Startup 类中设置缩进 JSON,但是如何从控制器中检索格式值?
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddWebApiConventions()
.AddJsonOptions(options=> options.SerializerSettings.Formatting=Newtonsoft.Json.Formatting.Indented);
}
}
public class HomeController : Controller
{
public bool GetIsIndented()
{
bool isIndented = ????
return isIndented;
}
}
解决方案
您可以将一个实例注入IOptions<MvcJsonOptions>
到您的控制器中,如下所示:
private readonly MvcJsonOptions _jsonOptions;
public HomeController(IOptions<MvcJsonOptions> jsonOptions, /* ... */)
{
_jsonOptions = jsonOptions.Value;
}
// ...
public bool GetIsIdented() =>
_jsonOptions.SerializerSettings.Formatting == Formatting.Indented;
有关(选项模式)的更多信息,请参阅文档。IOptions
如果您只关心Formatting
,您可以稍微简化并只使用一个bool
字段,如下所示:
private readonly bool _isIndented;
public HomeController(IOptions<MvcJsonOptions> jsonOptions, /* ... */)
{
_isIndented = jsonOptions.Value.SerializerSettings.Formatting == Formatting.Indented;
}
在此示例中,不需要该GetIsIndented
函数。
推荐阅读
- scala - 从 java.lang.Long 创建 Scala 选项时出现意外行为
- monetdb - 使用 tbl 和 src_monetdblite 访问数据
- android - RadListView itemTap 产生“调用 js 方法 onItemClick 失败”错误页面
- java - 使用弹出窗口自定义谷歌地图
- python - python,nltk,单词频率的多重绘图结果(子图)
- java - 连接到要用于 netbeans 项目的数据库内容
- entity-framework-6 - EF6 AutoMapper6 父/子不同的行为
- excel - 类型不匹配。ADO 从 Excel 导出到 Access 时出错
- python - python:在线操作图像而不是下载它们
- react-native - 使用 Flatlist renderItem 从 JSON 渲染文本 - 文本垂直显示