分享
 
 
 

[Wap]自定义asp.net mobile control

王朝asp·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

[Wap]自定义asp.net mobile control编写者

日期

关键词

郑昀@ultrapower

2005-7-28

Wap ASP.NET Mobile control device adapter

Device Adapter概念

按照MSDN《Walkthrough: Adding Support for Devices》的指示:

我们要想自定义MMIT(Microsoft Mobile Internet Toolkit)提供的控件,那么可以改变Adapter在最后关头的渲染工作。

首先,我们要说明render的概念,最好的动画教程就是http://www.asp.net/mobile/2514A_01A001.swf,它是Mobile Web Application Architecture的flash讲解。

所有的ASP.NET mobile device adapter都是通过text writer做render的。这些text writer均继承自MobileTextWriter。它提供了Write, WriteLine, 以及WriteBeginTag等方法。对于WML来说,这个Text Writer是System.Web.UI.MobileControls.Adapters.WmlMobileTextWriter。

第一步,下载http://go.microsoft.com/fwlink/?LinkId=6350的Device Adapter Code源代码;

或者直接链接MobileIT.exe

http://www.microsoft.com/downloads/details.aspx?FamilyId=AE597F21-B8E4-416E-A28F-B124F41F9768&displaylang=en

第二步,编辑其中的WmlTextBoxAdapter.cs文件;

第三步,通过csc.exe生成出一个新的Adapter DLL;

第四步,配置web.config;

第五步,重新编译你的工程。

可惜呀,MobileIt.exe下载不了。当然在ASP.NET 2.0中,是很容易地自定义Adapter的。

那么现在ASP.NET 1.1中,我们只好折衷采用下面的办法:

自定义一个Adapter类

在这里我们来定义一个继承自

System.Web.UI.MobileControls.Adapters.WmlListAdapter

的Adapter,来准备改写mobile:list控件的输出方式。

将下面的代码保存为ListAdapter.cs:

ListAdapter.cs

using System;

using System.Collections;

using System.Web.UI.MobileControls.Adapters;

namespace iUltraMobiles

{

/// <summary>

/// ListAdapter 的摘要说明。

/// 首先利用下面的命令编译出一个ListAdapter.dll:

/// csc /t:library /r:System.Web.Mobile.dll ListAdapter.cs

/// 其次,将以下的配置添加入web.config中mobileControls节点下:

/// <device name="UltraListDeviceAdapters"

/// inheritsFrom="WmlListAdapter">

/// <control name="System.Web.UI.MobileControls.Form"

/// adapter="iUltraMobiles.ListAdapter, iUltraMobiles" />

/// </device>

/// <see cref="http://www.cnblogs.com/zhengyun_ustc/archive/2005/07/28/customcuildyourmobilecontrol.html"/>

/// <seealso cref="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mwsdk/html/mwlrfdevice.asp"/>

/// </summary>

public class ListAdapter :System.Web.UI.MobileControls.Adapters.WmlListAdapter

{

public override void Render(

System.Web.UI.MobileControls.Adapters.WmlMobileTextWriter writer)

{

// Add your attributes here.

writer.WriteBeginTag("img");

writer.WriteAttribute("src","Images/1.png");

writer.WriteAttribute("alt", "欢迎您!");

writer.WriteLine(" />");

base.RenderChildren(writer);

}

}

}

编译ListAdapter

利用下面的命令编译出一个ListAdapter.dll:

csc /t:library /r:System.Web.Mobile.dll ListAdapter.cs

将这个ListAdapter.DLL复制到你的WAP应用程序bin目录下。

修改web.config来提供control mapping

在你的web.config文件中找到mobileControls节点,修改为以下:

Web.config中的system.web节点下

<!-- 指定没有 COOKIE 的数据字典类型

这将使字典的内容出现在本地请求 URL 查询字符串中。

这是在没有 Cookie 的设备上进行窗体身份验证所必需的。

-->

<!--在您使用像 useRandomID 这样的自定义属性时,必须在您的移动 Web 应用程序中启用自定义属性allowCustomAttributes。

-->

<mobileControls allowCustomAttributes="true" cookielessDataDictionaryType="System.Web.Mobile.CookielessData" >

<device name="UltraListDeviceAdapters"

inheritsFrom="WmlDeviceAdapters">

<control name="System.Web.UI.MobileControls.List"

adapter="iUltraMobiles.ListAdapter, iUltraMobiles" />

</device>

</mobileControls>

device节点就声明了一个新的Adapter,名为“UltraListDeviceAdapters”,这个名字是可以随便定义的。inheritsFrom属性是指。你必须提供控件的fully qualified control class name:“iUltraMobiles.ListAdapter, iUltraMobiles”,control的name属性指的是“你重载的哪一个mobile控件”。

试用新控件

现在你已经修改了mobile:list控件的最终渲染方式,在它原本输出的诸多个<a> tag之前抢先输出了你的image的符合wml规范的tag。

这样,你的aspx页面不需要做任何改动,重新编译你的工程后,新的渲染方式就生效了。

你可以在M3gate模拟器上试验。

附录A mobileControls例子:

下面给一个比较完整的例子做示范:

<!-- Adapter configuration for mobile controls used in the portal -->

<mobileControls>

<device name="PortalHtmlDeviceAdapters" inheritsFrom="HtmlDeviceAdapters">

<control name="ASPNetPortal.MobileControls.TabbedPanel, Portal" adapter="ASPNetPortal.MobileControls.HtmlTabbedPanelAdapter,Portal" />

<control name="ASPNetPortal.MobileControls.LinkCommand, Portal" adapter="ASPNetPortal.MobileControls.HtmlLinkCommandAdapter,Portal" />

</device>

<device name="PortalChtmlDeviceAdapters" inheritsFrom="ChtmlDeviceAdapters">

<control name="ASPNetPortal.MobileControls.TabbedPanel, Portal" adapter="ASPNetPortal.MobileControls.ChtmlTabbedPanelAdapter,Portal" />

</device>

<device name="PortalWmlDeviceAdapters" inheritsFrom="WmlDeviceAdapters">

<control name="ASPNetPortal.MobileControls.TabbedPanel, Portal" adapter="ASPNetPortal.MobileControls.WmlTabbedPanelAdapter,Portal" />

</device>

</mobileControls>

附录B mobileControls属性定义表:

mobileControls节点的具体各项属性定义可以参见:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mwsdk/html/mwlrfdevice.asp

The <mobileControls> element has the attributes shown in the following table.

Attributes of the <device> subtag

Description

name

Specifies the unique name by which you must identify the device adapter set.

inheritsFrom

An optional reference to another device adapter set, from which this set must inherit. The specified device adapter set can either appear earlier in the same <mobileControls> section, or in the <mobileControls> section of a higher-level configuration file.

predicateClass

Specifies the class type that supplies the evaluator predicate. The name that you use for the class type must follow the .NET Framework standards for specifying a fully qualified type name.

ASP.NET searches the specified assembly for the type. If the adapter set inherits from another type, the predicateClass attribute is not necessary and will default to the parent set's value.

predicateMethod

Specifies the method that supplies the evaluator predicate. The method must be static, and of the following signature:

static bool EvaluatorMethod(HttpContext context)

If the adapter set inherits from another adapter set, the predicateMethod attribute is not necessary, and will default to the parent set's value.

pageAdapter

Specifies the class type of the page adapter for the adapter set. The specified class must implement the IPageAdapter interface. The name must follow the .NET standards for specifying a fully qualified type name.

ASP.NET searches the specified assembly for the type. If the adapter set inherits from another adapter set, the pageAdapter attribute is not necessary, and will default to the parent set's value.

编写者

日期

关键词

郑昀@ultrapower

2005-7-28

Wap ASP.NET Mobile control device adapter

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有