fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
2 minut

MS Ajax w Chrome (3) – metoda ControlAdapter


15.02.2009

Pierwszy odcinek. Drugi odcinek.

Odcinek trzeci. Ostatni. Metoda ControlAdapter.

Mechanizm ControlAdapters umożliwia przejęcie kontroli nad sposobem renderowania kontrolek danego typu w zależności od przeglądarki, z której przyszło żądanie. Możemy dzięki temu stworzyć alternatywny wygląd kontrolek dla urządzeń mobilnych, czy zmienić standardowy lamerski “tabelkowy” sposób renderowania menu ASP.NET (co nota bene zostało zrobione przez autorów CSS Friendly Control Adapters).

W naszym przypadku będziemy modyfikować ScriptManagery niezależnie od typu przeglądarki, która wysłałą żądanie – zawsze dodamy “fixujący” skrypt (stąd refID=”Default”).

Po kolei należy uczynić co następuje:

    1. implementujemy ControlAdapter realizujący wymaganą funkcjonalność, czyli dodanie skryptu do ScriptManagera podczas zdarzenia Load:
        1:  using System.Web.UI;
        2:  using System.Web.UI.Adapters;
        3:  
        4:  public class ScriptManagerWebKitAdapter : ControlAdapter
        5:  {
        6:  	protected override void OnLoad(System.EventArgs e)
        7:  	{
        8:  		ScriptReference scriptReference = new ScriptReference("~/Scripts/webkit.js");
        9:  
       10:  		((ScriptManager)this.Control).Scripts.Add(scriptReference);
       11:  
       12:  		base.OnLoad(e);
       13:  	}
       14:  }
      
    2. tworzymy plik z rozszerzeniem *.browser (na przykład ScriptManager.browser) w katalogu App_Browsers i rejestrujemy w nim nasz adapter:
<browsers>
	<browser refID="Default">
		<controlAdapters>
			<adapter controlType="System.Web.UI.ScriptManager"
					 adapterType="ScriptManagerWebKitAdapter, myWebApp" />
		</controlAdapters>
	</browser>
</browsers>

Od tej pory wszystkie ScriptManagery otrzymają dodatkowy skrypt, który naprawi MS Ajax w przeglądarkach bazujących na WebKit.

Podsumowanie

W tym krótkim minicyklu przyjrzeliśmy się trzem różnym sposobom implementacji dokładnie tej samej funkcjonalności. Metoda pierwsza, czyli kopiuj/wklej, powinna u każdego w każdym przypadku zapalać między uszami lampkę z krwistoczerwonym napisem “NA 90% DA SIĘ TO ZROBIĆ LEPIEJ!”. Metoda druga, czyli HttpModule, wykorzystuje bardzo potężny mechanizm. W tym przypadku jednak jest to jak strzelanie z armaty do kaczki (mmm…) i nie ma konieczności uciekania się do czegoś tak “poważnego”. Rozwiązaniem idealnym wydaje się być metoda trzecia, Control Adapters, który jest chyba najmniej znanym i najrzadziej wykorzystywanym obszarem ASP.NET. A szkoda, bo drzemie w nim olbrzymi potencjał, dlatego zachęcam do dokładniejszego zapoznania się z tym tematem.

Nie przegap kolejnych postów!

Dołącz do ponad 9000 programistów w devstyle newsletter!

Tym samym wyrażasz zgodę na otrzymanie informacji marketingowych z devstyle.pl (doh...). Powered by ConvertKit

Comments are closed.

Moja książka

Facebook

Zobacz również