我在 Startup 类中设置了缩进 JSON,但如何从 Controller 中检索格式化值?
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;
}
}
最佳答案
您可以只注入(inject) IOptions<MvcJsonOptions>
的一个实例进入你的 Controller ,像这样:
private readonly MvcJsonOptions _jsonOptions;
public HomeController(IOptions<MvcJsonOptions> jsonOptions, /* ... */)
{
_jsonOptions = jsonOptions.Value;
}
// ...
public bool GetIsIdented() =>
_jsonOptions.SerializerSettings.Formatting == Formatting.Indented;
参见 docs有关 IOptions
的更多信息(选项模式)。
如果您只关心 Formatting
, 你可以稍微简化一下,只使用 bool
字段,像这样:
private readonly bool _isIndented;
public HomeController(IOptions<MvcJsonOptions> jsonOptions, /* ... */)
{
_isIndented = jsonOptions.Value.SerializerSettings.Formatting == Formatting.Indented;
}
在此示例中,不需要 GetIsIndented
功能。
关于c# - 从 Controller 获取 JsonOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52089464/