ASP.NET MVC如何知道如何填充模型以提供Controller的Action?它涉及反思吗?

dev*_*ium 13 .net c# asp.net asp.net-mvc asp.net-mvc-3

定义了一个 Model

public class HomeModel {
    [Required]
    [Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Required]
    [Display(Name = "Surname")]
    public string Surname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并具有以下内容 Controller

public class HomeController : Controller {
    [HttpPost]
    public ActionResult Index(HomeModel model) {
        return View(model);
    }

    public ActionResult Index() {

        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

一些"魔术"机制HomeModel model被ASP.NET MVC填满了值.有谁知道怎么样?

从一些基本测试中,它似乎会查看POST响应并尝试将响应对象名称与Model的属性相匹配.但要做到这一点,我想它必须使用反射?这不是继承缓慢吗?

谢谢

Ali*_*tad 11

是的,你在谈论魔术ModelBinder.

ModelBinder负责创建一个模型并使用表格后面的值进行保湿并执行验证,其结果将显示在其中ModelState.

默认实现是DefaultModelBinder,但您可以插入自己的.