我正在开发我在Asp中的第一个应用程序。我使用的是Asp.NET MVC 3环境。 我有一个控制器Action,它有一个参数。此参数的类型是一个复杂的对象。
public ActionResult MyAction(ComplexObj obj) {
//TODO: using obj
}
我正在使用ModelBinder类。但我不确定是否应该覆盖 BindModel 功能或 CreateModel 功能。
这两个函数之间的区别是什么,以及它们是否被rooter使用时。
谢谢!
答案 0 :(得分:6)
这两个功能之间的区别是什么? 由rooter exactely使用。
BindModel
是完成模型绑定过程中所有工作的主要方法,也是调用CreateModel
方法根据传递的类型提供模型实例的方法。 CreateModel
方法检查模型类型是dictionary
还是list
还是简单模型,最后通过调用返回实例,
Activator.CreateInstance(typeToCreate);
通常你必须覆盖BindModel
方法,除非你说你的要求,否则很难说哪一个要覆盖。如果你关心的只是覆盖模型实例的创建方式,那么你必须去CreateModel
。