Soran
Url çakışma

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>
- Değiştirilmiş Tür Kyamuran SalibryamMicrosoft contingent staff, Moderator 17 Ekim 2016 Pazartesi 08:37
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
-
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