Bu kontrolü niçin kullanırım?
Bir wap uygulaması geliştirdiğimizde her ziyaretçinin uygulamayı sorunsuz şekilde kullanabilmesi için bu kontrolü kullanırız. Kullanıcı arka planda telefonun ne desteklediğini bilemeyeceğinden yada bu uygulama bu telefon da çalışmaz diyemeyeceğimizden bu kontrol ile uygulamamızın tüm telefonlar da çalışmasını sağlarız.
Choice
Render edilecek Markup dili belirliyor. WML render edilecekse içerisine WML’e göre kod yazıyoruz. Html ise Html'e göre yazıyoruz.
ContentTemplate
Her yerde olduğu gibi burada da ContentTemplate çıkıyor karşımıza. Content Template içerisine Choice’de seçilen dile göre content template içerisindeki kod render edilecek.
DeviceSpecific Kullanımı
Uygulamanın WML ve HTML destekleyen telefonlar da çalışabilmesi için aşağıdaki gibidir;
<mobile:Panel ID="Panel1" runat="server">
<mobile:DeviceSpecific ID="DeviceSpecificControl" Runat="server">
<Choice Filter="isWML11">
<ContentTemplate>
<!— WML Render Edilecek -->
</ContentTemplate>
</Choice>
<Choice Filter="isHTML32">
<ContentTemplate>
<!-- HTML Render edilecek -->
</ContentTemplate>
</Choice>
</mobile:DeviceSpecific>
</mobile:Panel>
Bu kodun çalışması için WebConfig dosyasına Tanımlı DeviceFilter’ları eklememiz gerekir. Genel olarak 2 DeviceFilter kullanılsa da farklı devicefitlerlar’da bulunmaktadır. Aşağıda bazı device filter’lar gösterilmiştir.
<deviceFilters>
<filter name="isWML11" compare="PreferredRenderingType" argument="wml11" />
<filter name="isHTML32" compare="PreferredRenderingType" argument="html32" />
<filter name="isCHTML10" compare="PreferredRenderingType" argument="chtml10" />
<filter name="isMyPalm" compare="Browser" argument="MyPalm" />
<filter name="isPocketIE" compare="Browser" argument="Pocket IE" />
<filter name="isJPhone" compare="Type" argument="J-Phone" />
<filter name="isEricssonR380" compare="Type" argument="Ericsson R380" />
<filter name="isNokia7110" compare="Type" argument="Nokia 7110" />
<filter name="supportsColor" compare="IsColor" argument="true" />
<filter name="supportsCookies" compare="Cookies" argument="true" />
<filter name="supportsJavaScript" compare="Javascript" argument="true" />
<filter name="supportsVoiceCalls" compare="CanInitiateVoiceCall" argument="true" />
</deviceFilters>
Farklı bir Filter(örneğin CHTML ve PocketIE) ile render yapılmasını istiyorsak; aşağıdaki gibi kullanırız.
<mobile:Panel ID="Panel1" runat="server">
<mobile:DeviceSpecific ID="DeviceSpecificControl" Runat="server">
<Choice Filter=" isCHTML10">
<ContentTemplate>
<!— WML Render Edilecek -->
</ContentTemplate>
</Choice>
<Choice Filter=" isPocketIE ">
<ContentTemplate>
<!-- HTML Render edilecek -->
</ContentTemplate>
</Choice>
</mobile:DeviceSpecific>
</mobile:Panel>
Örnek
Konu ile basit bir örnek yapalım. Örneğimizde WML ve HTML destekleyen basit bir sayfa hazırlayacağız. Projemize yeni bir Mobile Form ekleyelim. Mobile Formumuza bir DeviceSpecific kontrolü ekleyelim. Yukarıda anlattığım DeviceFilter’ları da webCofig’e ekleyelim.

Formum yukarıdaki gibi bir görüntü oluştu. Şimdi html kısma gidelim; aşağıdaki kodları yazalım.
|
DeviceSpecific.aspx |
|
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DeviceSpecific.aspx.cs" Inherits="WAPSamples_DeviceSpecific" %>
<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<mobile:Form ID="Form1" Runat="server">
<mobile:Panel ID="Panel1" Runat="server">
<mobile:DeviceSpecific ID="DeviceSpecificControl" Runat="server">
<Choice Filter="isWML11">
<ContentTemplate>
Bu Sayfa WML ile Render Edilmiştir...
</ContentTemplate>
</Choice>
<Choice Filter="isHTML32">
<ContentTemplate>
Bu Sayfa HTML ile Render Edilmiştir...
</ContentTemplate>
</Choice>
</mobile:DeviceSpecific>
</mobile:Panel>
</mobile:Form>
</body>
</html> |
Gördüğünüz gibi çok basit. Şimdi sayfamızı test edelim.

Evet; farklı telefonlar da farklı sonuçlar aldık. Birde Web’den bakalım

Evet artık wap uygulamalarımızı her yerde çalıştırabiliyoruz J
Bu makalenin de sonuna geldik. Bir sonraki makale de görüşmek üzere. İyi çalışmalar dilerim
Sem Göksu
sem.goksu@yazilimgunlugu.com
www.semgoksu.com | www.yazilimgunlugu.com
Kaynaklar
http://www.w3schools.com
http://www.msdn.com