folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder ASP.Net İçin Düşündüğüm Alternatif Sayfa Modeli



ASP.Net İçin Düşündüğüm Alternatif Sayfa Modeli

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Şimdi beyler daha önce sık sık söylediğim gibi razoru sevmeme rağmen MVC yi sevmiyorum. Request.Querystring altından değişkenleri okutmak gerekirse inte cevirmek, gerekirse özel karakterleri temizlemek de hem uğraştırıyo hem de bişey atlama şansı yüksek.

    Onun yerine şöyle bişey düşündüm. SEO için de başka bi alternatifini yapiorum. Kullanımını 2. mesajda anlatıcam

     

    using System;
    using System.Collections.Generic;
    using System.Reflection;
    using System.Web;
    using System.Web.WebPages;
    
    namespace BaseWeb 
    {
        /*
        public abstract class BaseLayoutPage  
        {
    
            public DateTime startTime = DateTime.Now;
        }*/
        public abstract class BasePage  : System.Web.WebPages.WebPage
        {
         //  static int reqindex=0;
           public  DateTime startTime = DateTime.Now;
            protected override void InitializePage()
            {
    
            
               base.InitializePage();
           //    Response.Write("Rendering Lang" + this.App.);
    
    
               foreach (PropertyInfo property in this.GetType().GetProperties()) //sadece bu sınıfın property lerini al. Temel sınıfınkilerini değil.
               {
                   // Herbir property için DataColumn Attributelerini al
                   foreach (Req field in property.GetCustomAttributes(typeof(Req), true))
                   {
    
                       if (property.PropertyType == typeof(int))
                       {
                      //     if (field.index >= 0)
                       //        property.SetValue(this, int.Parse(Request.Url.Segments[field.index]), null); 
                     //      else
                           property.SetValue(this, (int)field, null);
                           //  break;
                       }
                       else
                           if (property.PropertyType == typeof(string))
                           {
    
    
                               string s = (string)field;
    /*
                               if (field.index >= 0)
                                   if (Request.Url.Segments.Length <=( field.index + 2)) s = ""; else
                                   s = Request.Url.Segments[field.index+2]; 
                               */
    
    
                               switch (field.InputValidationType)
                               {
                                   case Req.Validation.StripHtml:
                                       s = System.Text.RegularExpressions.Regex.Replace(s, @"<(.|\n)*?>", string.Empty, System.Text.RegularExpressions.RegexOptions.Compiled);
                                       break;
                                   case Req.Validation.StripQuotes:
                                       s = s.Replace("'", "&quot;");
    
                                       break;
                                   /* case Req.Validation.None:
                                        break;
                                    default:
                                        break;*/
                               }
                               property.SetValue(this, s, null);
                               //   break;
                           }
                           else
                               if (property.PropertyType == typeof(string[]))
                               {
                                   property.SetValue(this, (string[])field, null);
                                   //    break;
                               }
                               else
                                   if (property.PropertyType == typeof(bool))
                                   {
                                       property.SetValue(this, (bool)field, null);
                                       //    break;
                                   }
    
    
    
                       // Console.WriteLine( field.isim +":"+ property.Name+":"+property.GetValue(this,null));
                   }
               }
            
          }
    
    
    
    
            #region CustomAttr
    
            [AttributeUsage(AttributeTargets.Class)]
            public class NonTranslatedPage : Attribute
            {
            }
    
    
    
    
            /*
            protected override void InitializeCulture()
            {
                //  string clt = this.Culture;
                if (Session != null)
                {
    
                    string lang = (string)(Session["Lang"]);
    
                    if (String.IsNullOrEmpty(lang))
                        Session["Lang"] = "en";
    
    
                    string clt = BaseWeb.Functions.SetCulture(lang);
                }
                //base.InitializeCulture();
            }
            */
    
    
            protected bool IsNonTranslatedPage
            {
                get
                {
                    return (GetType().GetCustomAttributes(typeof(NonTranslatedPage), true).Length > 0);
                }
            }
            #endregion
    
    
          /*
            public string _(string classname, string keystr)
            {
    
                return (string)this.GetGlobalResourceObject(classname, keystr);
            }
            */
    
            public string Language
            {
    
                get
                {
                    if (Session != null)
                    {
                        if (Session["Lang"] != null)
                            return (string)Session["Lang"];
                        else return "en";
                    }
                    else return "en";
    
                }
            }
    
    
            #region RequestManager
    
    
            [AttributeUsage(AttributeTargets.Property)]
            public class Req : Attribute
            {
                public string isim = "";
                public RequestType InputRequestType;
                public Validation InputValidationType;
            //    public int index = -1;
    
                public enum RequestType
                {
                    Both = 0, QueryString = 1, Form = 2
                }
    
    
    
    
                public enum Validation
                {
                    StripHtml, StripQuotes, None
                }
    
                public string validate(string s)
                {
    
                    return s;
                }
    /*
                public Req()
                {
                    index = reqindex++;
                }
    
                public Req(Validation inputValidationType)
                {
                    index = reqindex++;
                    InputValidationType = inputValidationType;
    
                }
                */
                public Req(string s, RequestType ReqType)
                {
                    isim = s;
                    InputRequestType = ReqType;
    
                }
    
                public Req(string s, RequestType ReqType, Validation inputValidationType)
                {
                    isim = s;
    
                    InputRequestType = ReqType;
                    InputValidationType = inputValidationType;
                }
    
    
                public Req(string s)
                {
                    isim = s;
                }
    
                /*
               public static   int getInt(string s )
               {
                   return  getInt(  s, RequestType.Both);
               }*/
                public static int getInt(string s, RequestType q)
                {
                    int r = 0;
                    switch (q)
                    {
                        case RequestType.Both:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request[s])) return 0;
                            else if (int.TryParse(HttpContext.Current.Request[s], out r)) return r; else return 0;
                        //    break;
                        case RequestType.QueryString:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request.QueryString[s])) return 0;
                            else if (int.TryParse(HttpContext.Current.Request.QueryString[s], out r)) return r; else return 0;
                        //  break;
                        case RequestType.Form:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request.Form[s])) return 0;
                            else if (int.TryParse(HttpContext.Current.Request.Form[s], out r)) return r; else return 0;
                        //   break;
                        default:
                            return 0;
                        //  break;
                    }
    
                }
                /*
                public static string getString(string s)
                { 
                      return getString(  s,  InputRequestType);
            
            
                }*/
    
    
                public static bool getBool(string s, RequestType q)
                {
                    string boolstr = "";
                    switch (q)
                    {
                        case RequestType.Both:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request[s])) return false;
                            boolstr = HttpContext.Current.Request[s];
    
                            break;
                        case RequestType.QueryString:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request.QueryString[s])) return false;
                            else boolstr = HttpContext.Current.Request.QueryString[s];
    
                            break;
                        case RequestType.Form:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request.Form[s])) return false;
                            else boolstr = HttpContext.Current.Request.Form[s];
    
                            break;
                        // default: return "";
    
                        //     break;
                    }
    
                    boolstr = boolstr.ToLowerInvariant();
                    if (boolstr == "1") return true;
                    if (boolstr == "true") return true;
                    if (boolstr == "yes") return true;
                    return false;
    
                }
    
    
                public static string getString(string s, RequestType q)
                {
                    switch (q)
                    {
                        case RequestType.Both:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request[s])) return "";
                            else return HttpContext.Current.Request[s];
    
                        //     break;
                        case RequestType.QueryString:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request.QueryString[s])) return "";
                            else return HttpContext.Current.Request.QueryString[s];
    
                        //   break;
                        case RequestType.Form:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request.Form[s])) return "";
                            else return HttpContext.Current.Request.Form[s];
    
                        //   break;
                        default: return "";
    
                        //     break;
                    }
                }
                /*
                public static string[] getStrings(string s)
                {
                    return getStrings(s, InputRequestType);
                }*/
                public static string[] getStrings(string s, RequestType q)
                {
                    switch (q)
                    {
                        case RequestType.Both:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request[s])) return null;
                            else return HttpContext.Current.Request[s].Split(new char[] { ',' }, StringSplitOptions.None);
    
                        //    break;
                        case RequestType.QueryString:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request.QueryString[s])) return null;
                            else return HttpContext.Current.Request.QueryString[s].Split(new char[] { ',' }, StringSplitOptions.None);
    
                        //   break;
                        case RequestType.Form:
                            if (string.IsNullOrEmpty(HttpContext.Current.Request.Form[s])) return null;
                            else return HttpContext.Current.Request.Form[s].Split(new char[] { ',' }, StringSplitOptions.None);
    
                        //    break;
                        default:
                            return null;
                        //   break;
                    }
                }
    
                public static implicit operator System.Int32(Req v_Value)
                {
    
                    return getInt(v_Value.isim, v_Value.InputRequestType);
                }
    
                public static implicit operator System.String(Req v_Value)
                {
    
                    return getString(v_Value.isim, v_Value.InputRequestType);
                }
    
    
                public static implicit operator System.String[](Req v_Value)
                {
    
                    return getStrings(v_Value.isim, v_Value.InputRequestType);
                }
    
    
                public static implicit operator bool(Req v_Value)
                {
    
                    return getBool(v_Value.isim, v_Value.InputRequestType);
                }
    
            }
    
            #endregion
        }
    }

    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek
    // Webforms değil razorsa public abstract olcak aşağıdaki    
    public partial class  Default:BasePage //Her sayfada deminki classtan türetcez
    {
       [Req("email", Req.RequestType.QueryString, Req.Validation.StripHtml)]
       public string Email { get; set; }
    
       [Req("UndoEmail", Req.RequestType.Form, Req.Validation.StripHtml)]
       public string UndoEmail { get; set; }
    
       [Req("ID")]
       public int ID{ get; set; }
    
       [Req("isimler")]
       public string[] isimler{ get; set; } // virgulle ayrilmis listeyi otomatik listeye alacak
    
       [Req("ID2", Req.RequestType.Both)] 
       public int ID2{ get; set; } 
    
    protected void Page_Load(object sender, EventArgs e) 
    {
     //degiskenlerimiz otomatik olarak doldu burada kolayca kullanabilirsiniz
     Response.Write(Email);
     Response.Write(ID.ToString());
     } .... 
    }
    
    
    HolyOne tarafından 16/Nis/14 12:14 tarihinde düzenlenmiştir

    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    1234567B
    1234567B's avatar
    Kayıt Tarihi: 04/Şubat/2010
    Erkek

    breh breh üşenmedin mi aq.


    arbeit macht frei
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek
    1234567B bunu yazdı

    breh breh üşenmedin mi aq.

      microsoft neden bole yapmior diye dusunmekten gece uyku tutmadı hocam, performans olarak da bi eksiği yok


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    1234567B
    1234567B's avatar
    Kayıt Tarihi: 04/Şubat/2010
    Erkek
    HolyOne bunu yazdı
    1234567B bunu yazdı

    breh breh üşenmedin mi aq.

      microsoft neden bole yapmior diye dusunmekten gece uyku tutmadı hocam, performans olarak da bi eksiği yok

    valla abi sana pes diyorum :D


    arbeit macht frei
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Velespit Kampçısı
    ruhi
    ruhi's avatar
    Kayıt Tarihi: 10/Eylül/2011
    Erkek
    1234567B bunu yazdı
    HolyOne bunu yazdı
    1234567B bunu yazdı

    breh breh üşenmedin mi aq.

      microsoft neden bole yapmior diye dusunmekten gece uyku tutmadı hocam, performans olarak da bi eksiği yok

    valla abi sana pes diyorum :D

    seyhın beynının bı kopyasını ıstıyorum :P

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Retro
    by_Tet
    by_Tet's avatar
    Kayıt Tarihi: 22/Mayıs/2012
    Erkek

    Tamam mvcyle sorunun çözüldüğüne göre tarikatı asp.nete geçirirsin yavaş yavaş şeyhim ? :D


    iyibu! yeniden..
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nessaj
    nessaj's avatar
    Kayıt Tarihi: 03/Mayıs/2010
    Erkek

    Ne kadar etkisi olur bilmem ama başta bir reflection kullanmışın, o performansa eksi olarak yansır muhtemelen ama kolaylık sağladıktan sonra performans mühim değil.

    Sanırım query'den gelen değerleri type safe olarak alıyorsun değilm mi?

    Edit: ikinci postu şimdi gördüm, Hacı bildiğin C siz MVC yapmışın :D, az kaldı MVC'ye alıcaz seni de.

    nessaj tarafından 16/Nis/14 14:46 tarihinde düzenlenmiştir
Toplam Hit: 783 Toplam Mesaj: 8