【问题标题】:ASP.NET CORE 2: Model bound complex types must not be abstract or value types and must have a parameterless constructorASP.NET CORE 2:模型绑定的复杂类型不能是抽象类型或值类型,并且必须具有无参数构造函数
【发布时间】:2023-03-15 14:05:02
【问题描述】:

我想使用 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();
}

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

【问题讨论】:

  • 您需要将选项注入到构造函数中,而不是注入到您的操作方法中。
  • 感谢这解决了这个问题。

标签: asp.net asp.net-core


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-19
    • 2019-09-17
    • 2014-05-18
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多