|
|
1
28
updateModel()是一个控制器帮助器方法,它试图将一堆不同的输入数据源(来自视图的http post数据、querystring值、会话变量/cookies等)绑定到作为参数指示的显式模型对象。本质上,它只用于模型绑定。 如果您将操作的输入参数表示为强类型模型(如视图模型),那么在调用updateModel()时,您已经在后台执行了所有步骤。如果从datacontext检索对象并编辑其属性,那么savechanges()就是将更新推回到数据库所需的全部内容(在本例中是save())。 例子:
然而, 有一个将updateModel()用于强类型模型的用例:当您传入强类型模型并希望其值直接替换数据库中实体的值(前提是它们的名称和类型都相同)。在本例中,您将检索该对象,并对其使用updateModel(),其模型绑定操作将从强类型对象向检索的对象拉入任何类似名称和类型的属性。换句话说,它将执行 反射 为你。 因此,与您的示例一样,如果希望所有属性都更新而不指定要更新的属性,并且强类型模型和数据库模型具有类似命名的属性,那么您仍然希望使用updateModel()来利用反射。 例子:
这里(比使用formcollection对象)的唯一优势是您可以访问强类型对象的所有其他属性(如incoming.dinnerid所示)。 结论:如果要将强类型对象转换为派生对象,那么使用updateModel()可能是最简单的。但是,如果只是更新派生对象的一些属性,则基本上没有必要。另外,请注意,使用实体框架(而不是像linq to sql这样的东西)会造成所有这些问题,因为它可以将强类型对象和派生对象与其自己的方法关联起来。 |
|
|
2
4
它检查所有的httprequest输入,比如form、querystring、cookies和服务器变量。我想按这个顺序。 |
|
|
3
1
我们不是将模型对象作为参数传递给“post()”操作方法,而是在“post()”函数中创建模型对象的实例,并使用“updateModel()”函数更新它。updateModel()“函数检查所有的httprequest输入,如发布的表单数据、querystring、cookies和服务器变量,并填充employee对象。 例如
|
|
|
Andrus · 如何在Linux中阅读期刊 11 月前 |
|
|
Miranda · 读取xml文件时路径错误中有非法字符 1 年前 |
|
|
Primdonm · 如何将自定义列表中的字符串值格式化为货币格式? 1 年前 |
|
|
Kiryl · Sitecore中自己的控制器 1 年前 |
|
|
Farid · 如何从数据库中填充Resource.resx文件值? 1 年前 |