更新:2007 年 11 月
支持模板呈现的 ASP.NET 移动控件也支持默认的呈现。根据目标设备的不同,有关如何使用模板来综合考虑呈现方式的决策也会有所不同。ASP.NET 提供标准操作序列,允许模板呈现特定于设备。支持模板呈现的移动控件必须使用以下顺序:
控件使用 IsTemplated 属性确定是否定义和选择了设备模板。使用 OnInit 方法或 CreateChildControls 方法完成此操作。
如果定义了模板,则控件调用 CreateTemplatedUI 方法,该方法是控件从 MobileControl 基类继承的。
说明:
如果控件并未模板化,则不要调用 CreateTemplatedUI。
CreateTemplatedUI 调用控件适配器的 CreateTemplatedUI 方法。可以对设备适配器进行编码,重写此方法以实现特定于设备的模板呈现。
在控件适配器基类中定义的控件适配器的 CreateTemplatedUI 方法的默认实现又调用该控件的 CreateDefaultTemplatedUI 方法。可以对控件进行编码,重写此方法以实现一般的模板呈现。
在适配器的 Render 方法中,控件通过呈现其子级(在其中创建模板的实例),呈现模板。
移动控件还必须始终在从 TemplateContainer 派生的容器控件类型内创建新模板的实例。此规则比适用于 ASP.NET 服务器控件的规则更严格,后者只要求控件实现 INamingContainer 标记接口。下面的代码示例演示如何在移动控件中创建模板的实例。
void CreateChildTemplate(ITemplate template)
{
TemplateContainer container = new TemplateContainer();
template.InstantiateIn(container);
container.DataBind();
Controls.Add(container);
}
ItemCommand 事件
对于模板呈现,ItemCommand 事件处理程序是通过 ASP.NET 事件冒泡机制调用的。该事件处理程序会接收传递的一个参数,该参数指向源项,并指向生成该事件的控件的 CommandName 属性。这允许您以多种关联的交互方式呈现单个列表项。
在默认呈现时,控件提供简单的用户界面,允许用户单击一组项。在回发时,该控件调用 ItemCommand 处理程序,其参数指向源项。CommandName 属性返回 null。