【问题标题】:Form Post of an Complex Model to Controller in ASP.NET Core MVC在 ASP.NET Core MVC 中将复杂模型的表单发布到控制器
【发布时间】:2025-12-14 13:15:01
【问题描述】:

我有一个关于复杂模型的表单发布的问题。我的模型有一个子类和IEnumerables:

public class MyViewModel
{
    public int SingleInteger { get; set; }
    public IEnumerable<int> MultipleInts { get; set; }
    public IEnumerable<MySubclass> AssembledClass { get; set; }
    public IEnumerable<string> MultipleStrings { get; set; }
}

public class MySubclass
{
    public int Quantity { get; set; }
    public int Type{ get; set; }
}

从我的视图获取输入到我的控制器的最佳方式是什么? Modelbinder 甚至可以绑定这个吗?

【问题讨论】:

  • 没有 MVC6 之类的东西 ;)
  • 如果这是一个真正的表单帖子,你的HTML表单的实际数据设计比这有趣得多。 – 但是,模型活页夹在这里不会有问题。

标签: c# asp.net-core asp.net-core-mvc model-binding


【解决方案1】:

Modelbinder 甚至可以绑定这个吗?

是的,它可以做比这个类结构更复杂的事情。

从我的视图获取输入到我的控制器的最佳方式是什么?

帖子是 json。

示例:

你可以发布这个 json

{"singleInteger":1,"multipleInts":[1,2,3],"assembledClass":[{"quantity":1,"type":2}],"multipleStrings":["one","two"]}

到这样的控制器方法

public IActionResult Post([FromBody]MyViewModel model)

它会被翻译成这样的 MyViewModel 实例

var model = new MyViewModel
{
    SingleInteger = 1,
    MultipleInts = new List<int>(){ 1,2,3 },
    AssembledClass = new List<MySubclass>{
        new MySubclass 
        {
            Quantity = 1,
            Type = 2
        }
    },
    MultipleStrings = new List<string>(){ "one", "two"} 
};

【讨论】: