WebForms Core 2.1即将从埃拉纳特来.
新版本引入了一套能力集,旨在进一步扩大WebForms Core的服务器驱动方法.
这些新能力之一就是打磨.
粉碎提供了一种方法,可以将现有的DOM元素与新的HTML结构同步,而不一定取代已存在的元素本身.
这使得在保留现有DOM元素的身份的同时,可以更新HTML结构.
翻譯是一款DOM同步机制,可以将已存在的HTML元素与新的HTML结构相提并论,并将所需要修改应用到已存在的DOM上.
与传统的替换操作不同,例如: 粉碎并不简单地丢弃已存在的元素并创建出另一个元素.
相反,它分析现有要素和新要素,并开展必要的行动: 添加新属性 更新已存在的属性 移除已不存在的属性 添加已存在的子元素 更新已存在的子元素 移除已过时的子元素 匹配元素 尽可能使用并保存已存在的 DOM 元素身份 当需要创建新节点时,保留已注册事件倾听器 目标是对DOM进行最小的必要修改.
Reflection vs Sorphing WebForms Core 2.1同时包含Reflection和Morphing,但它们服务于不同的目的.
反射主要是合并操作.
例如,如果目标包含:和源包含: 反射可以将源合并到目标中,添加类和子,而不将源作为完整的替换定义.
解说有不同的哲学.
来源代表了理想的结构.
如果源不包含目标中存在的元素或属性,解析可以去除.
因此: 这种区分使得这两种机制都对不同类型的服务器驱动的UI操作有用.
从 WebForms 类中可以引用 WebForms Core API 解说.
第一种方法直接接受 HTML : 第二种方法使用已存在的元素作为源:例如: 这里:是目的地元素.
是源元素。
开发者不需要手动写入JavaScript来进行DOM同步.
完整示例考虑下页。
最初,页面包含一个用户卡:一个模板描述这个元素的新状态: 控制器可以使用: 该页面可以以正常的WebForms Core请求触发操作: 溶解时会发生什么?
粉碎前的目标有: 出自: 粉碎后对这两种结构进行比较,并应用必要的修改.
由此产生的 DOM 变为: 属性解析属性在目标与源之间同步.
例如:成为:新属性:被添加.
类:成为: 而风格根据出处更新.
目标中存在但来源中已不存在的属性被去除.
因此,粉碎有效同步属性集:儿童元素粉碎粉碎粉碎在儿童节点上也进行回转.
举例来说,这个要素:在新结构中不存在.
因此,它被删除。
同样:删除。
同时:被添加.
现存:保留并同步.
相配元素是莫菲克的重要部分之一,是确定一个新的元素是否与已经存在的元素相匹配.
WebForms Core使用标识符,如:和:为此.
例如,新旧结构都包含: 因此,解剖可以承认它们代表相同的DOM元素.
因此,可以在更新其属性和内容的同时保留现有的节点。
这不同于简单地删除旧按钮并创建一个全新的按钮.
事件听众 DOM 克隆有一个重要的限制: 不复制事件听众通过 .
因此,WebForms核心解析与WebForms核心事件注册程序整合