none
MVC RouteName RRS feed

  • 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.

    20 Temmuz 2013 Cumartesi 12:00

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.
    20 Temmuz 2013 Cumartesi 14:18

Tüm Yanıtlar

  • Register ettiğiniz route ları görebilir miyiz? (Default dahil çünkü ContentMapRoute pattern ile Default pattern birbirine uyuyor gibi görünüyor, uymaması gerekir.)
    20 Temmuz 2013 Cumartesi 12:34
  •  
     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 }); 

    20 Temmuz 2013 Cumartesi 12:51
  • 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+" }); 

    20 Temmuz 2013 Cumartesi 13:39
  • Deniyorum hemen teşekkürler.
    20 Temmuz 2013 Cumartesi 13:44
  •  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
    20 Temmuz 2013 Cumartesi 13:54
  • 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.
    20 Temmuz 2013 Cumartesi 14:18