En iyi yanıtlayıcılar
MVC RouteName

Soru
-
Merhabalar;
<a href="@Url.RouteUrl("ContentMapRoute", new { controller = (string)first.Controller, action = (string)first.Action, pageno = (string)first.RouteValue }) " title="@first.Description">@first.Title</a>
bu şekilde RouteName belirterek bir link oluşturuorum ancak benim tanımladığım RouteMap i değil default olan RouteMap kullanılıyor.
Teşekkürler.
Yanıtlar
-
Evet, routunuz ile default route opsiyonel parametreler yüzünden hala çakışıyor. Route lar birbirinden farklı olmalı ki problem ortadan kalksın. Büyük ihtimalle route sırasını değiştirmek de sizin için ileride problem yaratabilir. Bu yüzden en iyisi route unuzu biraz farklılaştırın. Örneğin {pageno} segmentini Page{pageno} şeklinde değiştirin ki farklı olsunlar.
- Yanıt Olarak Öneren Önay YALÇINERModerator 22 Temmuz 2013 Pazartesi 06:02
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 26 Temmuz 2013 Cuma 14:34
Tüm Yanıtlar
-
-
routes.MapRoute( name: "Default", url: "{lang}/{controller}/{action}/{title}/{id}/{pageno}", defaults: new { lang = "tr", controller = "AnaSayfa", action = "Index", title = UrlParameter.Optional, id = UrlParameter.Optional ,pageno=UrlParameter.Optional}); routes.MapRoute( name: "ContentMapRoute", url: "{lang}/{controller}/{action}/{pageno}", defaults: new { lang = "tr", controller = "AnaSayfa", action = "Index", pageno = UrlParameter.Optional });
-
Düşündüğüm gibi route lar birbiri ile uyuşuyor.
@Url.RouteUrl("ContentMapRoute", new { controller = (string)first.Controller, action = (string)first.Action, pageno = (string)first.RouteValue })
Bu şekilde url oluşturmak istemişsiniz. Oluşturulan url nin muhtemel çıktısı şöyle olacaktır:
"tr/urunler/sayfa/2"
Çıktıya dikkat ederseniz bu çıktı Default route ile de uyuşuyor:
"{lang = tr}/{controller = urunler}/{action = sayfa}/{title = 2}/{id = ""}/{pageno = ""}"
Bunu çözmek için ya route sırasını değiştirin ya da route tanımını şöyle değiştirin:
routes.MapRoute("ContentMapRoute",
"{lang}/{controller}/{action}/{pageno}",
new { lang = "tr", controller = "AnaSayfa", action = "Index", pageno = UrlParameter.Optional },
new { pageno = @"\d+" }); -
-
public ActionResult Index(string pageno) { ContentModel ContentModel = new ContentModel(); return View(ContentModel); }
Dediğiniz gibi de denedim ancak az önceki gibi Controller da ki parametre null geliyor.- Düzenleyen Vehbi BİRCAN 20 Temmuz 2013 Cumartesi 13:55 Eksik yazım
-
Evet, routunuz ile default route opsiyonel parametreler yüzünden hala çakışıyor. Route lar birbirinden farklı olmalı ki problem ortadan kalksın. Büyük ihtimalle route sırasını değiştirmek de sizin için ileride problem yaratabilir. Bu yüzden en iyisi route unuzu biraz farklılaştırın. Örneğin {pageno} segmentini Page{pageno} şeklinde değiştirin ki farklı olsunlar.
- Yanıt Olarak Öneren Önay YALÇINERModerator 22 Temmuz 2013 Pazartesi 06:02
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 26 Temmuz 2013 Cuma 14:34