ASP.NET编程:ASP.NET 2.0挪动开辟之界说设备挑选器
不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……asp.net<P> 在一个ASP.NET挪动页面中利用DeviceSpecific/Choice机关时,你必需界说设备选择器来测试MobileCapabilities工具的属性。你能够在使用程序的Web.Config文件的<deviceFilters>节点中界说设备选择器,个中每一个<filter>元素就是一个设备选择器。上面是界说设备选择器的语法:<system.web>
<deviceFilters>
<filter
name="filterName"
compare="capabilityName"
argument="comparisonString"/>
<filter
name="filterName"
type="className"
method="methodName"/>
</deviceFilters>
</system.web>
如上述代码所示,存在两个<filter>元素。它分离代表两种分歧范例的选择器,分离为基于对照的选择器和基于判别托付的选择器。语法指定了这两种选择器范例。第一种称为基于对照的选择器,可在运转时将开辟职员指定的值与设备功效确当前值举行对照。当但愿断定设备是不是撑持某特定功效时,可以使用此类选择器。它的各个属性为:
属性申明name必须的String属性,指定设备选择器的称号。注重,在设置该属性时要注重它是辨别巨细写的。比方,isHTML和IsHTML代表分歧的设备选择器。compare它包括设备选择器盘算的属性。argument指定该功效应与之对照的参数。假如未供应任何参数,则将null用于对照。
上面来界说一个复杂的基于对照的选择器,你完整能够在一个<deviceFilters>元素中界说基于对照的选择器,而无需分外的代码。比方,我们能够增加一个用来测试某个挪动设备是不是撑持HTML3.2的设备选择器,你仅需在Web.Config设置文件中增加以下的代码:
<system.web>
<deviceFilters>
<filtername="isHTML32"compare="PreferredRenderingType"argument="html32">
</filter>
</deviceFilters>
</system.web>
下面的代码界说了一个名为isHTML32的选择器,它用来测试MobileCapabilities工具的PreferredRenderingType属性是不是即是html32。除在DeviceSpecific/Choice机关中利用下面的选择器外,你还能够经由过程利用MobileCapabilities工具的HasCapability办法来评价设备功效,此办法供ASP.NET外部利用,用来完成用控件语法表达的各类设备选择前提。以下面的代码所示,它也是用来检察该挪动设备是不是撑持HTML3.2标志言语,假如设备具有指定的功效,则前往值为true,不然为false。注重,假如是基于对照的选择器,HasCapability办法的第二个参数为null。
MobileCapablitiescap=(MobileCapabilities)Request.Browser;
if((cap.HasCapability("isHTML32",null))
{
//Dosomething.
}
提醒:当你利用VisualStudio创立一个ASP.NETWeb挪动使用程序时,在增加的挪动Web.Config设置文件中将包括大批的基于对照的选择器。这些选择器包含isWML11、isHTML32、isCHTML10。你能够翻开该设置文件,检察一切的可用设备选择器。
<P> 第二类设备选择器称为基于判别托付的选择器。当必要比基于对照的选择器更加庞大的设备选择功效时,能够经由过程供应办法的类称号和办法称号,指定基于判别托付的选择器。在运转时,挪用供应的办法来断定设备选择器的盘算了局是不是为true。该选择器的属性为:
属性申明name选择器的称号type它是供应判别托付的类范例。称号必需切合指定完整限制范例名的Microsoft.NET尺度。ASP.NET在指定的程序会合搜刮该范例。method它是类type上办法的称号,该办法依据传送给它的MobileCapabilities实例前往一个布尔值唆使以后的设备是不是满意此选择器。
如今我们来界说一个基于判别托付的选择器,起首我们必要创立一个类库项目,编写和该选择器相干的类及办法,经由编译后,再在ASP.NETWeb挪动使用程序中援用包括该类的程序集,详细的完成将在前面用实例举行具体的先容。上面是类中的静态办法的详细情势(第二个参数是可选的,你能够将该参数作为分外的输出信息增加到下面的静态办法中):
publicstaticboolMethodName
(System.Web.Mobile.MobileCapabilitiescapabilities,Stringparam)
在Web.Config设置文件中,你能够接纳<filter>元素的第二种情势界说基于判别托付的选择器。比方,你创立了一个名为isMMEonSony的选择器,该选择器利用了MyClass类中的一个名为MMEandSony的静态办法,并且该类的定名空间是MyEvaluators.dll程序集里的MyNameSpace。因而我们必要在挪动Web.Config设置文件中编写以下的代码:
<system.web>
<deviceFilters>
<filtername="isMMEonSony"
type="MyNameSpace.MyClass,MyEvaluators.dll"
method="MMEandSony">
</filter>
</deviceFilters>
</system.web>
在上述设置中我们设置type属性为该类的完全称号:定名空间.类名,程序集。而method属性的属性值为运转时挪用的实践的办法名。
在DeviceSpecific/Choice机关中利用一个基于判别托付的选择器和在DeviceSpecific/Choice机关中利用一个基于对照的选择器没有甚么太年夜的区分,上面是利用基于判别托付的选择器的代码片段:
<mobile:Formid="Form1"runat="server">
<mobile:Labelid="Label1"runat="server"Text="ClientisNOTMMEonSony">
<DeviceSpecific>
<ChoiceText="ClientisMMEonSony"Filter="isMMEonSony">
</Choice>
</DeviceSpecific>
</mobile:Label>
</mobile:Form>
除下面的办法外,你还能够在代码中利用MobileCapabilities.HasCapability办法来检察挪动设备是不是具有isMMEonSony基于判别托付的选择器的功效,假如设备具有指定的功效,则前往值为true,不然为false。在基于判别托付的选择器这类情况下,HasCapability办法的第二个参数是可选的,你能够为该参数设置一个成心义的String值。
利用第二个参数的优点就是你能够传送一些MobileCapabilities工具没法猎取的挪动设备信息到HasCapability办法中,比方我们晓得HTTP文件头会传送一些和挪动设备相干的信息,我们可使用System.Web.HttpRequest工具的属性猎取挪动设备的一些由MobileCapabilities工具没法猎取的别的信息。上面是详细的完成代码:
if(((MobileCapabilities)Request.Browser).HasCapability(
"isMMEonSony",
Request.UserLanguages))
{
//Dosomething.
}
<P> 基于判别托付的选择器的详细完成历程
如今我们将创立一个针对分歧的挪动设备显现分歧范例图片的使用程序。而在本示例中,我们针对的四种分歧的挪动设备分离是利用HTML标志言语的年夜屏幕设备(比方PocketPC)、利用HTML标志言语的小屏幕挪动设备(比方i-mode)、利用WML标志言语的年夜屏幕挪动设备(比方EricssonR380)和利用WML言语的小屏幕设备(比方Openwave)。为此,所创立的挪动使用程序需依据哀求页面的挪动设备发送符合的图片文件,以便到达最好的显现效果。如今我们将一切的图片分红四种分歧的格局,分离为小型的GIF图片、年夜型的GIF图片、小型的WBMP图片和年夜型的WBMP图片。为了使程序能够辨别这四种分歧的图片格局,我们必要界说四个设备选择器,详细的申明以下:
■利用年夜型的GIF图片:假如该设备撑持GIF图片格局且屏幕较年夜,则前往true值
■利用小型的GIF图片:假如该设备撑持GIF图片格局且屏幕较小,则前往true值
■利用年夜型的WBMP图片:假如该设备撑持WBMP图片格局且屏幕较年夜,则前往true值
■利用小型的WBMP图片:假如该设备撑持WBMP图片格局且屏幕较小,则前往true值
为了检测这些分歧格局的文件和挪动设备的屏幕巨细,我们必要在程序代码中利用MobileCapabilities工具的两个属性:PreferredImageMime和ScreenPixelsWidth。如今我们就来创立和基于判别托付的选择器相干联的程序集,起首启动VisualStduio并实行以下的步骤:
1、起首选择"文件"-"新建项目"命令,在弹出的新建项目窗口中创立一个"类库"项目,并为该项目定名为MyEvaluators,点击"断定"按钮。
2、项目创立终了后,右键点选位于办理计划资本办理器中的"Class1.cs"文件,选择"重定名"命令,将其文件名改成"CustomEvals.cs"。
3、因为我们在办法中要利用MobileCapabilities范例的工具作参数,一切我们必要在该项目中增加一个包括MobileCapabilities类的程序集援用。在办理计划资本办理器中点击右键,在弹出的菜单当选择"增加援用"命令。在"增加援用"窗口的".NET"选项卡列表中找到"System.Web.Mobile"后双击该项,这时候在办理计划资本办理器中的"援用"节点出就会新增加System.Web.Mobile子节点。
4、因为MobileCapabilities是派生自System.Web程序会合的System.Web.HttpBrowserCapabilities,为此我们以下面不异的体例在".NET"选项卡列表中增加System.Web程序集的援用。
5、在代码试图的上方增加一行代码"usingSystem.Web.Mobile",如许我们就能够在后续的编码过程当中不再必要输出MobileCapabilities类的完全称号。下面的这统统都为今后,在代码编纂窗口中输出以下的用来界说静态办法的代码:
usingSystem;
usingSystem.Web.Mobile;
namespaceMSPress.MobWeb.MyEvaluators
{
publicclassCustomEvals
{
publicstaticboolUseSmallGif(
MobileCapabilitiescaps,
Stringnotused)
{
boolretval=false;
if(caps.PreferredImageMime=="image/gif"&&
(caps.ScreenPixelsWidth<100))
retval=true;
returnretval;
}
//假如该设备撑持GIF图片格局且屏幕较小,前往true
publicstaticboolUseLargeGif(
MobileCapabilitiescaps,
Stringnotused)
{
boolretval=false;
if(caps.PreferredImageMime=="image/gif"&&
!(caps.ScreenPixelsWidth<100))
retval=true;
returnretval;
}
//假如该设备撑持GIF图片格局且屏幕较年夜,前往true
publicstaticboolUseSmallWBMP(
MobileCapabilitiescaps,
Stringnotused)
{
boolretval=false;
if(caps.PreferredImageMime=="image/vnd.wap.wbmp"&&
(caps.ScreenPixelsWidth<100))
retval=true;
returnretval;
}
//假如该设备撑持WBMP图片格局且屏幕较小,前往true
publicstaticboolUseLargeWBMP(
MobileCapabilitiescaps,
Stringnotused)
{
boolretval=false;
if(caps.PreferredImageMime=="image/vnd.wap.wbmp"&&
!(caps.ScreenPixelsWidth<100))
retval=true;
returnretval;
}
//假如该设备撑持WBMP图片格局且屏幕较年夜,前往true
}
}
保留后,选择"天生"-"天生MyEvaluators"命令。这时候会在该项目目次下的/bin/debug文件夹中天生一个名为MyEvaluators.dll的程序集。
<P> 尔后,我们要新建一个ASP.NETWeb挪动使用程序,如许就能够挪用MyEvaluators.dll程序会合的各个办法,使得挪动使用程序能够依据这些办法主动辨认这些图片的格局和屏幕的巨细。因而我们还要实行的步骤以下:
1.选择"文件"-"新建网站"命令,在办理计划资本办理器窗口中删除默许的Default.aspx文件,经由过程右键菜单的"增加新项"命令为站点增加一个"挪动Web窗体"和一个"挪动Web设置文件"。
2.因为站点程序中必要利用MyEvaluators.dll程序会合的各个办法来辨认所撑持的图片的式和屏幕的巨细,为此我们仍然要在办理计划资本办理器中经由过程右键菜单的"增加援用"命令来增加对MyEvaluators.dll程序集的援用,在弹出的"增加援用"对话框的"扫瞄"选项卡中,找到MyEvaluators.dll地点的目次,选中后点击断定便可。如许在决计划资本办理器中会新建一个"Bin"目次来寄存所援用的MyEvaluators.dll程序集。
3.翻开Web.Config设置文件,输出以下的用来挪用MyEvaluators.dll程序会合各办法的界说四个基于判别托付的选择器的代码。
<deviceFilters>
…
<filtername="UseLargeGIF"
type="MyEvaluators.CustomEvals,MyEvaluators"
method="UseLargeGif"/>
<filtername="UseSmallGIF"
type="MyEvaluators.CustomEvals,MyEvaluators"
method="UseSmallGif"/>
<filtername="UseLargeWBMP"
type="MyEvaluators.CustomEvals,MyEvaluators"
method="UseLargeWBMP"/>
<filtername="UseSmallWBMP"
type="MyEvaluators.CustomEvals,MyEvaluators"
method="UseSmallWBMP"/>
</deviceFilters>
4.最初一步就是在挪动页面中增加一个DeviceSpecific/Choice机关,如许就能够依据辨认出的基于判别托付的选择器来自界说使用程序的出现。比方,假如辨认出设备选择器为UseLargeWBMP的话,我们可使用一个Image控件显现特定的图片,万一图片没法显现,也能够在页面上用笔墨信息"LargeWBMP"作进一步的申明。为此我们能够在页面上增加以下的代码
<mobile:Formid="Form1"runat="server">
<mobile:Imageid="Image1"runat="server">
<DeviceSpecific>
<ChoiceFilter="UseLargeWBMP"ImageUrl="LargePic.wbmp"
AlternateText="LargeWBMP">
</Choice>
<ChoiceFilter="UseSmallWBMP"ImageUrl="SmallPic.wbmp"
AlternateText="SmallWBMP">
</Choice>
<ChoiceFilter="UseSmallGIF"ImageUrl="SmallPic.gif"
AlternateText="SmallGIF">
</Choice>
<ChoiceImageURL="LargePic.gif"
AlternateText="LargeGIF">
</Choice>
</DeviceSpecific>
</mobile:Image>
</mobile:Form>
你可使用分歧的摹拟器查来检察使用程序实行后的效果(摹拟器的利用在后面的章节中已举行了具体的先容,这里就不反复了)以前学了大概半年时间的asp(没有机会做大系统,最多是自己对公司系统做些调整和修改还有一些小程序)。应该说开始接触asp.net是今年元月5号的事。现在很想把公司的系统重新用.net来架构,却不知道如何下手。 大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。 ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。 ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。 这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。 ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。 ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
页:
[1]