【问题标题】:Model binding not working for nested object模型绑定不适用于嵌套对象
【发布时间】:2019-08-27 11:26:34
【问题描述】:

我正在尝试在我的模型中绑定从邮递员发布的模型中的数据:

public class VariantModel
{
    public int Id { get; set; }     
    public List<SubvariantModel> Subvariants { get; set; }
}

public class SubvariantModel
{
    public int Id { get; set; }
    public string Description { get; set; }
    public IFormFile Document { get; set; }
}

每个属性都被填充,但只有 Document 属性变为空,如您在此处看到的:

但令人惊讶的是,当我检查 http 请求对象时,我看到了该文件:

这就是我从 POSTMAN 发布数据的方式:

代码:

[HttpPost]
public void Post([FromForm]VariantModel emp)
{
    var d = HttpContext.Request;
}

谁能告诉我这里可能是什么问题?

更新:

【问题讨论】:

  • 你的键名很奇怪。名字应该是Subvariants[0].Document,而不是Subvariants[0][Document]。令人惊讶的是,这实际上适用于IdDescription,但也许出于某种原因它根本不适用于IFormFile。看起来很奇怪,但老实说我没有看到任何其他问题。
  • @ChrisPratt 我也尝试过这样的 Subvariants[0].Document 但仍然为空,是的,确实我也没有得到这里的问题。这是 asp.net webapi 核心中的错误吗模型粘合剂?
  • 一点也不。这是非常的基本代码,我几乎就像这样运行代码。只要帖子正文中的名称遵循正确的绑定约定(这些约定似乎如此),它就会绑定。
  • @ChrisPratt 那为什么现在不起作用。可能是您没有在嵌套模型中使用 IFormFile。有什么解决方案吗?
  • 我刚刚用ASP.NET Core 2.0 测试了你的代码,一切对我来说都很好。您能否在 github 上分享您的项目并分享您通过 postman 执行的请求?

标签: c# asp.net-web-api asp.net-core postman


【解决方案1】:

这也是我遇到的问题。在 .NET Core v2.2 中将 IFormFile 作为视图模型属性嵌套是一个已知问题。

对我有用的修复是here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多