本主题是ASP.NET在移动设备上展现的方面的内容 css
起初看起来deviceFilters与前面的browserCaps相似。一样也会关联到HttpBrowserCapabilities,而在这里用到的是MobileCapabilities,可是细看后发现browserCaps关注的是浏览器,deviceFilters关注的是设备自己。 html
定义了设备筛选器以后,您能够将其应用于 ASP.NET 移动控件中以定义特定于设备的呈现。 应用的设备筛选器映射到 .aspx 文件中 DeviceSpecific构造内的 <choice> 元素。 而后,您能够为这些应用的设备筛选器设置属性重写和模板化。 一些特定于设备的自定义示例包括:web
这些方案中的每个都须要根据目标设备是否与 Web.config 文件中的 <deviceFilters> 节匹配来进行筛选。 这些筛选器也可能遍及在应用程序中,而不是只出如今一个地方。编程
实际上服务端从一个HTTP请求得知这些信息,请求头确定有附带。在面前的内容知道,浏览器的信息经过对User-Agent的识别,再经过浏览器功能定义,把结果存放在HttpBrowserCapabilities中,而这里对设备功能断定的就是基于这里得出的HttpBrowserCapabilities来进行。 浏览器
ASP.NET内置的设备功能可查看附表1 ide
能够从两种设备筛选器中进行选择:比较计算器或计算委托。 post
对于简单的比较,能够经过提供功能的名称和要与之比较的值,指定基于比较的筛选器。 在运行时,若是功能值和提供的值相等,则设备筛选器的计算结果为 true。 布尔值属性在比较时不区分大小写;所以,true 和 True 都有效。 其余属性比较区分大小写。 测试
对于更复杂的计算,您能够经过提供方法的类和方法名指定基于计算委托的筛选器。 在运行时,调用所提供的方法来肯定设备筛选器的计算结果是否为 true。 ui
在Web.config文件中配置以下 lua
<deviceFilters> <filter name="IsHtml" compare="PreferredRendering" argument="html32" /> <filter name="GPSEnabled" type="MyApplication.MyCapabilityEvaluators,MyApplication" method="IsGPSEnabled" /> </deviceFilters>
对于第一个filter是用比较计算器的,compare特性是指定由比较计算器计算的浏览器功能。 该功能能够是任何内置功能,也能够是任何其余自定义功能计算器的名称。argument特性是指定该功能应与之比较的参数;
对于第二个filter是用计算委托,type是指定提供计算委托的类类型。是类的彻底限定名:(类的全名+","+程序集名称),method特性是指定提供计算委托的方法。
下面的示例演示如何定义名为 isHTML32 的设备筛选器。
<filter name="isHTML32" compare="PreferredRenderingType" argument="html32" />
在运行时,此筛选器将当前请求的 MobileCapabilities 实例的 PreferredRenderingType 属性值与值 html32 进行比较。
下面的示例演示如何定义名为 GPSEnabled 的新功能。
namespace MyAssembly { publicclass MyCapabilityEvaluators { publicstaticbool IsGPSEnabled( System.Web.Mobile.MobileCapabilities capabilities, String unusedArg) { // processing code } } }
将如下元素添加到适当的 Web.config 文件以添加新功能:
<filter name="GPSEnabled" type="MyNamespace.MyCapabilityEvaluators, MyAssembly" method="IsGPSEnabled" />
若是使用 Filter 属性指定方法名称,则该方法必须符合如下原型
public bool methodName( System.Web.Mobile.MobileCapabilities capabilities, String optionalArgument);
若须要获取设备是否支持指定功能能够使用如下方式
对于内置的功能除了能够用MobileCapabilities的属性进行比较外,还能够这样子
((System.Web.Mobile.MobileCapabilities)System.Web.HttpContext.Current.Request.Browser).HasCapability("ScreenBitDepth", "8");
返回的是一个bool值,代表是否具有该功能;
对于自定义的功能,只能经过HasCapability
((System.Web.Mobile.MobileCapabilities)System.Web.HttpContext.Current.Request.Browser).HasCapability("GPSEnabled", null);
HasCapability 方法使用两个参数:capabilityName,它是功能字典中设备计算方法、属性或项的名称;optionalArgument,它是 capabilityName参数须要的任何参数。 HasCapability 方法按照如下顺序执行其计算:
注意 |
HasCapability 方法经过将 optionalArgument 参数设置为 null 来计算 <DeviceSpecific> 和 <Choice> 构造。 |
附表1
下表从适配器开发人员的角度列出了 ASP.NET 移动控件设备属性及有效的标记语言。 此表还列出对于应用程序逻辑中的常规使用有效、从而适用于全部标记语言的属性(一般不是呈现标记的属性)。
Property |
常规使用 |
HTML 和 XHTML |
cHTML |
WML |
是 |
是 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
是 |
是 |
否 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
否 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
是 |
是 |
否 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
是 |
|
否 |
是 |
是 |
是 |
|
否 |
是 |
是 |
是 |
|
否 |
否 |
是 |
否 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
是 |
是 |
是 |
|
否 |
否 |
是 |
否 |
|
是 |
是 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
否 |
否 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
否 |
是 |
否 |
|
否 |
否 |
是 |
否 |
|
否 |
否 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
否 |
是 |
否 |
|
否 |
是 |
是 |
是 |
|
否 |
否 |
是 |
否 |
|
是 |
是 |
是 |
是 |
MSDN参考
移动设备功能(总览页)
来自 <https://msdn.microsoft.com/zh-cn/library/wa9x6tza(v=vs.100).aspx>
设备筛选建议
来自 <https://msdn.microsoft.com/zh-cn/library/8xef2eak(v=vs.100).aspx>
设备功能表
来自 <https://msdn.microsoft.com/zh-cn/library/dcwa1kf5(v=vs.100).aspx>
为多个设备配置 Web 应用程序
来自 <https://msdn.microsoft.com/zh-cn/library/fcs06t52(v=vs.100).aspx>
以编程方式计算功能
来自 <https://msdn.microsoft.com/zh-cn/library/2cf6d1wd(v=vs.100).aspx>
设备计算方法
来自 <https://msdn.microsoft.com/zh-cn/library/hweskhy5(v=vs.100).aspx>