代码之家  ›  专栏  ›  技术社区  ›  Kneubel

在ASP中,将复杂模型的Post格式设置为控制器。净核心MVC

  •  0
  • Kneubel  · 技术社区  · 7 年前

    我有一个关于复杂模型的表单帖子的问题。我的模型有一个子类和 IEnumerable s:

    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甚至可以绑定这个吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Marcus Höglund    7 年前

    Modelbinder甚至可以绑定这个吗?

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

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

    Post为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"} 
    };