ASP.NET核心2:模型绑定的复杂类型不能是抽象或值类型,并且必须具有无参数构造函数

时间:2018-04-25 18:46:54

标签: asp.net asp.net-core

我想使用IOptions通过POCO获取配置,但它会抛出错误消息'模型绑定的复杂类型不能是抽象或值类型,并且必须具有无参数构造函数'

DatabaseSettings.cs

public class DatabaseSettings
    {
        public string MongoDBServer { get; set; }
    }

appsettings.json

"DatabaseSettings": {
    "MongoDBServer": "localhost"
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
      services.AddMvc();
      services.Configure<DatabaseSettings>(Configuration.GetSection("DatabaseSettings"));
}

控制器

public IActionResult Create(IOptions<DatabaseSettings> options)
{
  string test = options.Value.MongoDBServer;
  return View();
}

我不知道如何处理它。你有建议吗?谢谢!

1 个答案:

答案 0 :(得分:2)

我有同样的问题。我发现this的答案很有帮助。

请尝试将[FromServices]添加到控制器操作:

public IActionResult Create([FromServices] IOptions<DatabaseSettings> options)