none
Url çakışma RRS feed

  • Genel Tartışma

  • Merhaba arkadaşlar

    ben route tanımlaması yapıyorum fakat  üstte olan route hangisi ise ona yönlendirme yapıyor yardımcı olabilir misiniz ?

    sabit sayfalar için yapıyorum.  url ler aşağıdaki gibi çıkıyor  fakat yönlendirme "hakkımızda"  oluyor 

    domain.com/tr/Hakkımızda

    domain.com/tr/Iletisim

               routes.MapRoute(
                     name: "Hakkimizda",
                     url: "{lang}/{name}",
                     defaults: new { controller = "Hakkimizda", action = "Hakkimizz", id = UrlParameter.Optional });
    
    
    
    
                routes.MapRoute(
                      name: "Iletisim",
                      url: "{lang}/{name}",
                      defaults: new { controller = "Iletisim", action = "Iletisimm", id = UrlParameter.Optional });
    <li><a href="@Url.RouteUrl("Hakkimizda",new { @lang=lang  , @controller = "Hakkimizda",@action="Hakkimizz",@name=ViewData["MenuAdiHakkımızda"].ToString().ToSafeUrlString()})">@ViewData["MenuAdiHakkımızda"]</a></li>
    
    
    
    <li><a href="@Url.RouteUrl("Iletisim",new { @lang=lang  , @controller = "Iletisim",@action="Iletisimm",@name=ViewData["MenuAdiiletisim"].ToString().ToSafeUrlString()})">@ViewData["MenuAdiiletisim"]</a></li>


    12 Ekim 2016 Çarşamba 14:26

Tüm Yanıtlar

  • Olmaz böyle fix ne anladık o işten adam tr/Halit yazsa gene hakkimizdaya gidecek bu şekilde hangisinin üstte olduğuyla alakası yok. Şunu yapman gerekiyor url: "tr/Hakkimizda" hakkimizdaya gidecek peki engiliş ne olacak dersen bir döngüyle bu işi çözmen gerek. yani bir tablo hazırlayıp dil-adı eşleşmesi yapmalısın bu arada name parametresini de aynı mantıkla şöyle yapabilirsin "page"+lang+name şeklinde name parametresini de mesela ayarlayabilirsin. Ama kesinlikle bu şekilde olmaz basitçe şu örneği yapabilirim.

    Dictionary<string, List<string>> pages = new Dictionary<string, List<string>>();
    pages.Add("en", new List<string> { "Hakkimizda", "Iletisim" });
    pages.Add("tr", new List<string> { "AboutUs", "Contact" }); 
    foreach (var lang in langs) {
     foreach (var pgs in lang.Value) {
      routes.MapRoute(name: "page"+lang.Key+pgs,
      url: lang.Key+"/"+pgs,
      defaults: new { controller = "Page", action = lang.Key }
     }
    }
    Burada controlleri dinamik yazdırmadım sen tabi db den bu tabloyou yaparsan çok daha mantıklı olur oraya dil-adı-controller-action şeklinde doldurup burda döngüyle satırlara göre yaptırırsın.


    Fullstack Developer

    12 Ekim 2016 Çarşamba 14:44
  • db de controller ya da actionname tutmadım 

    dil olayına takılma dil i değiştiriyorum 

    routes.MapRoute(
                     name: "Hakkimizda",
                     url: "{lang}/-h-{name}",
                     defaults: new { controller = "Hakkimizda", action = "Hakkimizz", id = UrlParameter.Optional });
                
                routes.MapRoute(
                      name: "Iletisim",
                      url: "{lang}/-i-{name}",
                      defaults: new { controller = "Iletisim", action = "Iletisimm", id = UrlParameter.Optional });
                

    yukardaki gibi deneme yaptım çıktıları dile göre değişiyor örnek hakkımızda


    domain.com/tr/-h-Hakkımızda

    domain.com/tr/-h-About-us

    domain.com/tr/-h-O-HAC  olarak geliyor fakat route yukardaki gibi tanımlamam gerekiyor oda sıkıntı  arada '-h-' kalıyor  kalmaması lazım 

    12 Ekim 2016 Çarşamba 14:54