Bazen bir aspx sayfasının çıktısı üzerinde işlemler yapmak isteyebilirisiniz. Örneğin sayfadaki yasaklı kelimelerin - genelde forumlarda ihtiyaç duyulur :)  - düzenlenmesi, ya da bazı bilindik kelimeler üzerinde işlem yapmak isteyebiliriz. Mesela ben sayfamda BT Akademi ve oğuz kelimelerine rastladığımda ilgili kelimelerin yerine sanki linki verilmiş gibi yer almasını isteyebilirim. Bu durumda yapmamız gereken çıktının - Response - Filter özelliğinden yararlanmak. Filter özelliğini - property- incelediğimizde aslında bunun bir Stream nesnesi olduğunu görürüz. Bu durumda yapmamız gereken görüntülenmesini istediğimiz çıktıyı kendimiz oluşturmak. Bunu da kendi Filter - aslında Stream'dan türemiş bir class oluşturmak - nesnemizi oluşturup Response.Filter özelliğine bu kendi nesnemizi vermekten ibaret.

Stream sınıfı abstract bir class olduğundan abstract - özet kelimesini pek sevmesem de Türkçe'de başka kelime anlamını tam veremiyor- olarak bildirilmiş metodlarını kendi sınıfımızda uygulamamız - implement - gerekiyor. Bunları ekteki dosyadan inceleyebilirsiniz. Asıl üzerinde durulması gereken konu ise bu oluşturduğumuz sınıfın Write(...) metodu. Bu metod içinde sayfamızda görünmesini istediğimiz çıktıyı kendimizin oluşturması. Örneğimizi incelersek

class AFilter:Stream
{

     Stream _originalStream = null;

     public AFilter(Stream ResponseFilter)
     {
         _originalStream = ResponseFilter;
     }

     ...........

     ...........

     public override void Write(byte[] buffer, int offset, int count)
     {
         string text = Encoding.UTF8.GetString(buffer);

         //Regex de kullanılabilir...
         text = text.Replace("oğuz", "<a href=http://www.oguzyagmur.com>oguz</a>");
         text = text.Replace("BT Akademi", "<a href=http://www.btakademi.com>BT Akademi</a>");

         // istenilen ek işlemler yapılabilir.
         text = text.Replace("\r\n", "");

         //eklemeler yapılabilir cıktıya...
         text += "<br>tüm hakkı saklı falan değildir. tepe tepe kullanın";
 
         buffer = Encoding.UTF8.GetBytes(text);
        _originalStream.Write(buffer, 0, buffer.Length);
     }
}

Write metodunda sayfaya çıktı gönderilmeden önce çıktıyı alıp üzerinden işlemler yapıp daha sonra çıktıyı sayfaya gönderiyorum. Bu sınıf oluşturdukdan sonra yapmamız gereken sayfanın OnPreInit metodunda hazırlamış olduğumuz bu filitrenin sayfa çıktısı üzerine uygulanmasını sağlamak.

protected override void OnPreInit(EventArgs e)
{
    Response.Filter = new AFilter(Response.Filter);
}

Bu durumda sitedeki her sayfa için bu işlemi tekrarlamak olacaktır ki çok da iyi bir yöntem değil. Belki MyCustomPage isimli Page den türemiş olan bir sınıf oluşturup tüm sayfalarımızı bu - MyCustomPage - sayfadan türeterek bir nevi çözüm geliştirsek de  -sizin çok daha iyi fikriniz olabilir - size önerim bu işi üstlenecek bir HttpModule hazırlamanız olacaktır.

Burda da ilk akla gelen soru hazırlamış olduğum bu filitreyi HttpModule de hangi event'te sayfanın çıktısına uygulamak. msdn'i biraz kurcaladığımda sayfanın çıktısı üzerine filitre ReleaseRequestState eventi sırasında uygulandığını öğrendim. Bu durumda aşağıdaki kısacık kod ile sitemizdeki tüm sayfalar üzerinde hazırladığımız bu filitreyi etkin kılabiliriz.

public class HrefFilter : IHttpModule
{

     public void Dispose()
     {
     }

     public void Init(HttpApplication context)
     {
         context.ReleaseRequestState += new EventHandler(context_ReleaseRequestState);
     }

     void context_ReleaseRequestState(object sender, EventArgs e)
     {
         if (HttpContext.Current.Response.ContentType == "text/html")
         {
              HttpContext.Current.Response.Filter = new AFilter(HttpContext.Current.Response.Filter);
         }
     }
}


filter_dosyalar.rar (24.57 KB)
 
Tuesday, April 14, 2009 10:33:26 AM (GTB Daylight Time, UTC+03:00)
Oğuz Hocam Sayğıyla eğiliyorum önünüzde süper oldu bu :) gerçi derstede dinlemiştim ama demekki başı taşlar yerine geç oturuyor.

elinize sağlık süper olmuş.
Tuesday, April 14, 2009 3:45:13 PM (GTB Daylight Time, UTC+03:00)
Afiyet Bal Seker olsun :)
Friday, October 16, 2009 9:04:15 AM (GTB Daylight Time, UTC+03:00)
<h2 align="center">Costs For Uggs--What It Costs?</h2>
<p>--&gt;Are you lusting after a few (or even more) <a href="http://www.goodugg.co.uk/ugg-classic-cardy-c-161.html">Ugg boots</a> and if so, you're in good company, as girls and women of all ages, especially with the simple, slipper-like design of these sheepskin <a href="http://www.goodugg.co.uk/grey-ugg-boots-5819-classic-cardy-p-23458.html">ugg boots sale </a>, which are relatively easy and very comfortable to wear. And they appear to be affected. Some men are also jumping on the trend and luxury UGGs? Australia, the brand also offers a range of contemporary styles for them.</p>
<p>--&gt;Could you mind giving everyone loves from <a href="http://www.goodugg.co.uk/ugg-classic-tall-c-162.html">ugg classic </a>? There are so many types of uggs, <a href="http://www.goodugg.co.uk/ugg-bailey-button-c-178.html?zenid=847c0f495b87cb43928dcc19d09f4019">ugg bailey button</a>,ugg <a href="http://www.goodugg.co.uk/ugg-classic-tall-c-162.html">classic tall</a>, ugg <a href="http://www.goodugg.co.uk/ugg-classic-short-c-160.html">classic short</a>, ugg <a href="http://www.goodugg.co.uk/ugg-classic-cardy-c-161.html">classic cardy</a>. How to choose your favorite? Or do you really want to one uggs regardless its style? Despite their design is awkward and slipper-lile, <a href="http://www.goodugg.co.uk/">Uggs</a> is one of the few stations that are of general interest, have argued that cross generational lines.</p>
<p>--&gt;Young people, students and young mothers and the Middle Ages, the original Black <a href="http://www.goodugg.co.uk/ugg-ultra-tall-c-167.html">Ultra Tall UGG Boots</a>, seem pulled the fleecy-lined boots that are manufactured in Australia, with the best materials. Are you sure that your feet warm in winter without socks, and cool in summer so that is more versatile too? If no, hurry up to take one <strong>ugg boots </strong>on <a href="http://www.goodugg.co.uk/ugg-classic-tall-c-162.html">uggs on sale</a> ! That's why we see people wear them in schools, supermarkets, on the slopes and even in the most popular beaches in the United States and abroad. Many surfers also use uggs to keep their feet warm.</p>
<p>--&gt;What do you really care about? Is its price or quality, or you just following the general trend? You know what are you thinking in your heart!</p>
Saturday, October 24, 2009 3:29:27 PM (GTB Daylight Time, UTC+03:00)
why the ugg bailey<strong> <a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">ugg knightsbridge sale</a> </strong>button boot is so popular? as we known,<strong><a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">ugg knightsbridge boots</a></strong> have morphed together their two most popular styles. they started with the ever-popular <strong><a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">ugg knightsbridge sand</a></strong> and then added a wooden <strong><a href="http://www.linkboots.com/ugg-classic-cardy-5819-c-26.html">classic cardy uggs grey</a></strong> from their best-selling, as seen on oprah, uggcardy. they are one pop-fusion<strong> <a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">ugg knightsbridge black</a></strong>. when the new fall step into our life this year, <strong><a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">ugg knightsbridge on sale</a></strong> are beginning search for an footwear going together with their jeans. now you are reaching to the every <strong><a href="http://www.linkboots.com/ugg-classic-cardy-5819-c-26.html">classic cardy ugg australia</a></strong> for the latest fashion trend. in past two or<A href="http://www.thegoodboots.com/specials.html" target="_blank"><strong> </strong></A>three years, the <strong><a href="http://www.linkboots.com/ugg-classic-cardy-5819-c-26.html">classic cardy uggs on sale</a></strong> kept women, men and kids <strong><a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">ugg knightsbridge boot</a></strong> salewarm and cozy under its super-popular fashion. <strong><a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">ugg knightsbridge chestnu</a></strong><a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">t</a> the new fall in 2009, we get<strong> <a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">ugg knightsbridge uk</a></strong>. the <strong><a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">knightsbridge uggs</a></strong> become the first choice for ugg follower<strong> <a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">ugg knightsbridge ugg boots</a> </strong>and getting hotter and hotter. the <strong><a href="http://www.linkboots.com/ugg-womens-knightsbridge-c-50.html">ugg knightsbridge uggs on sale</a> </strong>style c the bailey button has become a must have this winter. now<strong> <a href="http://www.linkboots.com/ugg-bailey-button-5803-c-30.html">ugg australia bailey button</a> </strong>there are 5 colors available in 5 colors including black, chestnut, grey, chocolate and sand on<strong> <a href="http://www.linkboots.com/ugg-bailey-button-5803-c-30.html">ugg australia bailey button boot</a></strong>. we provide enough stock for this fall and winter. you <A href="http://www.thegoodboots.com/ugg-classic-cardy-c-2.html" target="_blank"><strong>ugg shoes </strong></A>wil enjoy shopping anytime before this <strong><a href="http://www.linkboots.com/ugg-bailey-button-5803-c-30.html">ugg boots bailey button</a></strong>. anyway, the popular classic styles including <strong><a href="http://www.linkboots.com/ugg-bailey-button-5803-c-30.html">bailey button grey uggs</a></strong>, ugg boot short (5825) and<a href="http://www.linkboots.com/ugg-classic-cardy-5819-c-26.html"> <strong>classic cardy ugg boots</strong></a><strong></strong> are all your choices. tags ?
Friday, November 06, 2009 4:07:04 AM (GTB Standard Time, UTC+02:00)
Do you want to buy some sheepskin boots, please come to www.findugg.com.Full range of UGG boots for Men and Women to buy online. Fast and free shipping to worldwide, competitive price, high quality, and efficient service.

Read more:http://www.findugg.com
Tuesday, December 22, 2009 3:13:30 AM (GTB Standard Time, UTC+02:00)
20091222c1ygy I wear <a href="http://www.boonoutlet.com/ugg-genuine-womens-nightfall-boots-black-p-1251.html">UGG Nightfall Boots on sale</a>is considered a kind of a fashion trend, this trend has affected the whole world. If you have not tried, then it is regrettable. With the advent of winter, <a href="http://www.boonoutlet.com/ugg-new-arrival-suede-boots-5230-black-p-1279.html">UGG New Arrival Suede Boots </a>online become popular up a lot of people can not wait to experience the feeling of wearing ugg prices ugg some people appear to be high, ugg boots online above ugg style good, <a href="http://www.boonoutlet.com/ugg-boots-gray-carved-in-pattern-on-hot-sale-p-1226.html">UGG Gray classic tall</a> are always welcome to many people as it is high quality and fashion design.For myself,i like this
<a href="http://www.boonoutlet.com/ugg-authority-classic-mini-boot-black-for-women-p-1014.html">UGG Classic Mini Boot </a> very much,you can have it and show yourself now,it is not let you downUgg Napoule Sandal,the price is not expensive. To meet your needs, make haste to experience the feeling of the trend.


Name
E-mail
Home page

Comment (HTML not allowed)  

Enter the code shown (prevents robots):

Live Comment Preview