萌萌妈妈 发表于 2015-1-16 22:46:42

ASP.NET网站制作之ASP.NET 2.0挪动开辟之设备挑选器的使用...

C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。asp.net  在后面的文章中我已经先容过DeviceSpecific/Choice机关和设备选择器,当时我们仍是在ASP.NET挪动页面的HTML视图下或站点程序的Web.Config文件中经由过程手动编码来界说设备选择器和DeviceSpecific/Choice机关。可是,假如你利用的是VisualStudio2005的话,我们能够间接接纳一种便利的、可视化的体例往界说DeviceSpecific/Choice机关和设备选择器,制止了在程序中接纳手动编码如许冗杂的完成历程,并且由于开辟职员没有间接的键进代码,也就不简单呈现代码的拼写和语法毛病。

  提醒:在VisualStudio2005工具箱的"挪动Web窗体"选项卡中包括一个名为DeviceSpecific的控件,你能够拖拽此控件到一个Form控件或Panel控件中。尔后你将这个页面切换到HTML视图时,你会发明对应的Form控件或Panel控件中将包括DeviceSpecific/Choice的机关语法。有一点必要注重的是,你不克不及想固然地以为拖拽一个DeviceSpecific控件到其他的ASP.NET挪动控件中也会完成上述的DeviceSpecific/Choice机关。只要当你界说一个属性重写或为列表控件界说一个模板化选项时,才会主动地在这些控件里增加一个DeviceSpecific/Choice机关。DeviceSpecific控件仅合用于在Form控件和Panel控件中以一种可视化的体例界说模板化选项。

  创立和使用设备选择器

  在ASP.NET挪动页面上选中一个控件后,在属性窗口的"设备特定"栏中能够看到(AppliedDeviceFilters)项,我们能够点击其右边空缺处的省略号按钮,这时候会弹出"已使用的设备选择器"对话框。底本该对话框的主要目标是编纂完控件的属性后,为这类形态下的控件使用设备选择器,可是它也能够让你界说新的设备选择器。而且这些界说好的设备选择器能够使用于全部站点程序和一切的控件中,ASP.NET会主动将这些新界说的设备选择器存储在站点程序的Web.Config文件中。





  在上图"可用的设备选择器"下拉列表中,枚举出了以后正在编纂属性的控件一切可用的设备选择器。该对话框的下方列表中,显现了以后正在编纂属性的控件已使用的设备选择器。假如你要新建一个设备选择器的话,能够点击对话框上的"编纂"按钮。这时候会弹出"设备选择器编纂器",如图所示:


  在该对话框中,你将能够在右边的"设备选择器"列表中看到以后站点程序中已存在的设备选择器。当你在上述的"设备选择器"列表中任选一个范例为"相称对照"的设备选择器,该设备选择器对应的属性就会在"对照"下拉列表框和"参数"文本框中展现出来。

  一切增加一个"相称对照"的设备选择器,你依照以下的步骤便可完成:

  1.点击"设备选择器编纂器"对话框上的"新建立备选择器"按钮。

  2.为这个新建的设备选择器键进一个符合的称号。

  3.该设备选择器的"范例"选择"相称对照"。

  4.在"对照"下拉列表框中,键进或选择要与对话框中"参数"文本框中的值举行对照的MobileCapabilities类中的某个属性。

  5.在"参数"文本框中输出参数值,当一个MobileCapabilities工具对应的属性值和该参数相称时就将前往"true"值。

  提醒:就拿上图来讲是一个名为isWML11的设备选择器,在这里我们选择要对照的属性是PreferredRenderingType,也就是说假如该设备选择器的PreferredRenderingType属性对应的值即是上面"参数"文本框的值"wml11",那末该设备选择器就前往一个true值。

  创立一个范例为"判别托付"的设备选择器的历程和下面相称对照设备选择器的创立历程是相似的,唯一的分歧就是判别托付的设备选择器不是在"对照"下拉列表框和"参数"文本框键进或选择响应的内容,取而代之的是你必要在"范例"文本框输出包括自界说托付的类名和.DLL程序集名,而在"办法"文本框输出的是实践的托付办法名。

  

  在上一篇文章《设备选择器的界说及完成》形貌了一个名为UseLargeGIF托付办法,假如你必要利用该办法来判别一幅图片是否是年夜型GIF图片的话,你必要在范例文本框中输出"MyEvaluators.CustomEvals,MyEvaluators",而在"办法"处输出"UseLargeGif"。当你为站点程序界说好了一切的设备选择器后,你能够将它们使用就任何一个但愿完成属性重写的控件中。一切你新界说的设备选择器城市在"设备选择器编纂器"下拉列表中展现出来。
  为控件使用设备选择器

  在"已使用的设备选择器"对话框中,选择将要给一个控件使用的设备选择器,并点击"增加到列表"按钮将这个可用的设备选择器增加到"已使用的设备选择器"列表框中。尔后你还能够点击该对话框上的高低箭头来调剂这些设备选择器的地位。名为(Default)的设备选择器是默许的选择,一切它前往的老是true值。因而,(Default)设备选择器的序次必需位于一切设备选择器的下方(也就是"已使用的设备选择器"列表框的最底端地位)。详细的情况以下图所示:

  

  该图显现的是为一个label控件使用四个设备选择器,响应地你应当晓得这类情况下由VisualStudio2005主动天生的DeviceSpecific/Choice机关代码以下:

<mobile:Formid="Form1"runat="server">
<mobile:LabelID="Label1"Runat="server">
<DeviceSpecific>
<ChoiceFilter="isPocketIE"/>
<ChoiceFilter="isHTML32"/>
<ChoiceFilter="isCHTML10"/>
<Choice/>
</DeviceSpecific>
</mobile:Label>
</mobile:Form>
  也就是说四个设备选择器的序次也就是DeviceSpecific/Choice机关中的<Choice>元素的响应序次。

  属性重写详解

<DeviceSpecific>和<Choice>元素

  一切承继自System.Web.UI.MobileControl的ASP.NET挪动服务器控件,在其代码声明中都能够包括一个<DeviceSpecific>元素。我在后面说起过,一个<DeviceSpecific>元素能够包括恣意个<Choice>元素。一样平常来讲,<Choice>元素的语法以下:

<Choice
Filter="filterName"
xmlns="urlToSchema"
<!-属性重写选项--!>

<!-模板化选项--!>
</Choice>
  下表是<Choice>经常使用的一些属性和子元素。

属性/子元素申明Filter对比后面的<Choice>元素的语法,FilterName必需为一个可用的、在站点Web.Config文件<deviceFilters>节点处界说的设备选择器的称号。注重,设备选择器的称号是巨细写敏感的,isHTML32和ishtml32是两个分歧是设备选择器。假如你在<Choice>元素中没有界说Filter属性,那末在<Choice>元素就将成为默许的选择,为此<Choice/>在设备选择器列表中的分列地位是最初的。Propertyoverrides你可用在DeviceSpecific/Choice机关中为控件的属性设置值。也就是说你能够在每一个<Choice>元素中为控件对应分歧的设备选择器设置分歧的属性值。比方我们在后面的示例中设置了四个设备选择器(个中一个是默许的),假如你在<Choice>元素中为每一个设备选择器都设置了分歧的label控件的Text属性。那末当某个设备选择器前往true值的话,那末在该设备选择器对应Text属性文本值就会重写其他设备选择器中的Texe属性文本值。xmlns该属性通常为不必开辟职员来指定的,VisualStudio2005会主动检测模板中利用的是甚么标志言语,尔后VisualStudio2005就会将该属性拔出到响应的<Choice>元素中。以是站点无需间接对该属性举行操纵,你也没有需要为该属性赋值。Templateelements利用这个属性指定一些模板化的控件-比方Form、Panel、List和ObjectList控件,它同意页面在出现时将你界说的内容整合到这些控件中。
  你能够在<DeviceSpecific>元素中利用一个不指定Filter属性的<Choice>元素,这就是我下面所说的默许的<Choice>元素。你也能够不界说如许一个默许的<Choice>元素,可是一旦你界说的话,就必定要将该默许的元素安排在全部<Choice>元素列表的最末了。这是由于ASP.NET是按按次来判别<Choice>元素的,当某个特定的设备哀求挪动Web页面时,将会使用第一个前往true的<Choice>元素。而默许的<Choice>元素老是前往true值,以是安排到全部元素列表最后面的话就将招致其他的<Choice>元素生效。

  列表枚举了利用<Choice>元素的分歧办法,在本示例中利用它来举行属性重写和界说<HeaderTemplate>和<FooterTemplate>(这些都是Form控件中经常使用的模板)。

<%@PageInherits="System.Web.UI.MobileControls.MobilePage"
Language="C#"%>
<%@RegisterTagPrefix="mobile"
Namespace="System.Web.UI.MobileControls"
Assembly="System.Web.Mobile"%>

<mobile:Formrunat="server">
<DeviceSpecific>
<ChoiceFilter="isHTML32">
<!-当设备撑持HTML3.2标志言语时,利用两个模板构建页面,且在页眉模板中利用图片--!>
<HeaderTemplate>
<tablewidth="100%"height="100%"cellspacing="1">
<tr><tdbgcolor="#003366">
<imgsrc="http://www.webjx.com/htmldata/2006-10-16/sportsextra.gif">
</td></tr>
<tr><tdbgcolor="#cccccc"valign="top"height="100%">
</HeaderTemplate>
<FooterTemplate>
</td></tr>
<tr><tdbgcolor="#003366"height="4"></td></tr>
</table>
</FooterTemplate>
</Choice>
<Choice>
<!-默许的元素。当设备不撑持HTML3.2标志言语时,只在页眉模板
中利用SPORTSEXTRA!文本--!>
<HeaderTemplate>
<mobile:Labelrunat="server"StyleReference="title"
Text="SPORTSEXTRA!"/>
</HeaderTemplate>
</Choice>
</DeviceSpecific>
<mobile:Labelrunat="server"Font-Size="Small"Font-Name="Arial">
WelcometoourmobileSportsExtraWebsite.
Checkhereforup-to-theminutesportsnewsasithappens!
<DeviceSpecific>
<ChoiceFilter="isWML11"Text="WelcometoLIVEresults!"/>
<!-当设备撑持WML1.1标志言语时,Label控件的Text属性值为"Welcometo
LIVEresults!"--!>
<ChoiceFilter="isCHTML10"
ForeColor="Red"
Text="WelcometoLIVEresults!">
<!-当设备撑持的是CHTML1.0标志言语时,Label控件的Text属性值仍然为
"WelcometoLIVEresults!",可是字体的色彩是白色--!>
</Choice>
</DeviceSpecific>
</mobile:Label>
</mobile:Form>
  上面是站点程序的Web.Config文件中界说的设备选择器:

<configuration>
<system.web>
<deviceFilters>
<filtername="isHTML32"
compare="PreferredRenderingType"argument="html32"/>
<filtername="isWML11"
compare="PreferredRenderingType"argument="wml11"/>
<filtername="isCHTML10"
compare="PreferredRenderingType"argument="chtml10"/>
</deviceFilters>
</system.web>
</configuration>
  Form控件中包括一个<DeviceSpecific>元素,假如客户端设备撑持HTML3.2,那末就会在Form控件中拔出一个HeaderTemplate(页眉模板)和一个FooterTemplate(页脚模板),而且这两个模板中的HTML标志合起来就使得该页面构成一个表格结构。在这个表格中我们利用了<img>HTML标签将一幅图片添补到表格的第一行。

  对位于Form控件中的DeviceSpecific/Choice机关的第二个<Choice>元素,其实不存在Filter属性,以是它就是默许的<Choice>元素。假如对以后的哀求isHTML32设备选择器前往的是false值,那末程序将利用仅包括一个Label控件的<HeaderTemplate>来出现页面。
  除此以外,Form控件中还包括了一个利用DeviceSpecific/Choice机关的Label控件,而利用DeviceSpecific/Choice机关的次要目标就是属性重写。Label控件默许形态下的文本值为一段长的字符串"WelcometoourmobileSportsExtraWebsite.Checkhereforup-to-theminutesportsnewsasithappens!"。但是,在一些小屏幕的设备来讲,比方撑持WML1.1,CHTML1.0标志言语的设备(也就是说对isWML11、isCHTML10设备选择器来讲前往true),上述的字符串将延长为"WelcometoLIVEresults!"。并且在i-mode的设备(就是撑持CHTML1.0的设备)上,Text属性和ForeColor属性均被重写。

  上面两图分离是上述程序在PocketInternetExplorer和openwave仿真程序中的实践显现效果。从图能够看出,在PocketInternetExplorer中,页面的结构是接纳表格的情势,并且由于PocketInternetExplorer撑持HTML3.2标志言语,以是DeviceSpecific/Choice机关的第一个<Choice>元素前往true值,为此会利用<HeaderTemplate>和<FooterTemplate>两个模板,而且label控件显现的是长字符串文本。

  

  利用属性重写为自界说特定设备的出现

  属性重写是一种在DeviceSpecific/Choice机关中为分歧的客户端设备设置分歧的控件属性值的办法,也就是说能够依据分歧的设备举行分歧的出现。

  每一个ASP.NET挪动控件都能够包括一个DeviceSpecific/Choice机关。在<DeviceSpecific>元素中的每一个<Choice>元素顺次举行判别,而第一个判别为true的<Choice>元素将使用到包括该机关的控件上。在上一篇文章《设备选择器的界说及完成》中,我已经举了一个利用属性重写的详细的实例,就是利用image控件为特定的挪动设备出现该设备撑持格局的图片,代码以下:

<mobile:Imagerunat="server"id="myImages"AlternateText="NorthwindCorp.">
<DeviceSpecific>
<ChoiceFilter="isHTML32"ImageUrl="Northwindlogo.gif"/>
<ChoiceFilter="isWML11"ImageUrl="Northwindlogo.wbmp"/>
</DeviceSpecific>
</mobile:Image>
  当客户端设备哀求包括该控件的页面时,ASP.NET会主动利用该设备对应的MobileCapabilities工具来剖析<Choice>元素。假如isHTML32前往true的话,那末image控件就将利用Northwindlogo.gif举行出现。假如isWML11前往true,就利用Northwindlogo.wbmp图片。假如上述的两个设备选择器均不为true的话,那末ImageUrl属性就处于不决义形态,也就是说将利用image控件的AlternateText属性值"NorthwindCorp."文本举行替换。

  提醒:在image控件中利用的两个设备选择器均已在Web.Config文件中举行了界说,假如你的站点程序还没有Web.Config文件的话,能够在"办理计划资本办理器"中经由过程右键菜单的"增加新项"-"挪动Web设置文件"体例手动举行增加。

  在下面的示例中演示了DeviceSpecific/Choice机关的基础用法:假如特定的设备选择器为true的话,将对包括该机关的控件举行属性重写。属性重写次要能够用来完成:

  1.利用分歧的图片文件:当一个客户端设备撑持分歧的图片格局,你能够接纳属性重写完成选择何种图片举行出现。

  2.由于设备显现屏巨细而对字符串举行调剂:你能够在一些年夜屏幕的设备上利用长字符串,而在小屏幕的设备利用缩减的字符串。

  3.撑持多言语的程序:你能够依据客户端设备利用的首选言语,为控件的Text属性设置以该言语对应的文本。

  4.为特定设备自界说款式属性:当客户端设备在出现控件时,ASP.NET会依据该设备撑持的特征利用分歧的字体或色彩。除此以外,你还能够为特定的设备利用分歧的款式属性。鄙人一篇文章中将会介怎样利用DeviceSpecific/Choice机关和模板化控件,为客户端设备利用特定的标志言语。
  在VisualStudio2005中接纳可视化的体例界说属性重写

  VisualStudio2005供应了一种可视化的体例来界说和使用设备选择器,属性重写也不破例。当你想为某个控件使用属性重写时必需起首为该控件使用一个设备选择器。给控件使用设备选择器我在后面已先容过了,为了你牢固后面的常识,这里就将完成属性重写的全部历程均枚举出来:

  1.经由过程"文件"-"新建网站"-"ASP.NET网站"新建一个站点。

  2.删除"Default.aspx"文件,在"办理计划资本办理器"中经由过程右键菜单的"增加新项"-"挪动Web窗体"命令增加一个ASP.NET挪动页面。

  3.仍然在"办理计划资本办理器"中经由过程右键菜单的"增加新项",经由过程"挪动Web设置文件"为站点增加一个已包括多少个设备选择器的Web.Config文件。

  4.拖拽一个Label控件中Form控件中,选中Label控件,并在属性窗口的(AppliedDeviceFilters)项处点击右边的省略号按钮。
  
  5.在弹出的"已使用的设备选择器"对话框中,经由过程选择"可用的设备选择器"下拉列表框的各项将你想增加的设备选择器经由过程"增加到列表"按钮逐一增加到"已使用的设备选择器"列表中,最初点击"断定"按钮,如许就为该控件使用了设备选择器。下图是我在该示例中增加的4个设备选择器。


  6.选中Label控件,在属性窗口的(PropertyOverrides)项右边点击省略号按钮,这时候会弹出"属性重写"对话框。

  

  7.我们可经由过程"已使用的设备选择器"下拉列表来检察该控件以后已使用的设备选择器,如今我们就先选择isPocketIE("")为该设备选择器设置属性重写,在本例中我们仅对该控件的Text属性举行重写,为此我们可用在Text属性处填写"利用isPocketIE设备选择器举行属性重写"。各个设备选择器的Text属性设置以下:

  

  

  
  
  8.为Label控件设置好各个设备选择器的属性重写后,当客户端设备哀求该页面时,假如扫瞄器是PocketInternetExplorer的话,Label控件大将显现"利用isPocketIE设备选择器举行属性重写"文本。假如是撑持html3.2标志言语的扫瞄器,Label控件上显现的是"利用isHTML32设备选择器举行属性重写"。

  该页面终极的代码以下:

<mobile:Formid="Form1"runat="server">
<mobile:LabelID="Label1"Runat="server">
<DeviceSpecific>
<ChoiceFilter="isPocketIE"Text="利用isPocketIE设备选择器举行属性重写"/>
<ChoiceFilter="isHTML32"Text="利用isHTML32设备选择器举行属性重写"/>
<ChoiceFilter="isCHTML10"Text="利用isCHTML10设备选择器举行属性重写"/>
<ChoiceText="利用默许的设备选择器举行属性重写"/>
</DeviceSpecific>
</mobile:Label>
</mobile:Form>
也许唯一可以让世人留恋Java的理由就剩下它的王牌——跨平台。

若天明 发表于 2015-1-19 23:26:44

ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。

灵魂腐蚀 发表于 2015-1-26 20:31:24

可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

第二个灵魂 发表于 2015-2-4 20:30:31

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。

飘灵儿 发表于 2015-2-10 07:05:16

能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。

变相怪杰 发表于 2015-3-1 01:31:21

目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.

活着的死人 发表于 2015-3-10 11:40:38

最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。

老尸 发表于 2015-3-17 06:12:33

市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。

仓酷云 发表于 2015-3-23 23:17:03

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
页: [1]
查看完整版本: ASP.NET网站制作之ASP.NET 2.0挪动开辟之设备挑选器的使用...