none
MVC RouteConfig için ürün ismi URL de göstermek RRS feed

  • Soru

  • Merhaba,

     RouteConfig dosyasında yönlendirme yaparken URL de ürün ismi de çıksın istiyorum. Şuan Default olarak Controller Action id sıralaması mevcut , fakat ürüne tıkladığında linkler bu şekilde ayarlı. 

    RouteConfig  içinde gelen action name e göre ID yi kullanıp URL e ürün yada kategori adını ekleyebilir miyim.?

    NOT :

    @Url.Action("urunler/" + item.categoryID+"/"+item.categoryname , "Home")"

    şeklinde bir kullanımla RouteConfig içinde 

    routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}/{title}",                            
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, title = UrlParameter.Optional }

    şeklinde bir tanımlama ile çözdüm fakat böyle olunca bütün Url actionlara ekleme yapmam gerekiyor. bunu sadece route içinde çözebilir miyim?


    Cosh

    6 Haziran 2016 Pazartesi 13:23

Yanıtlar

  • aman ne yaptınız siz :) şu stringler arasında + operatörünü kullanmaktan bi vazgeçin bence. Çok enteresan şeyler çıkıyo ortaya. Sadece burada değil her konuda.

    RouteConfig'inize Default route u eski haline alıp yeni bir route şablonu tanımlayın;

    routes.MapRoute(
                    name: "Ürün",
                    url: "{controller}/{action}/{id}/{title}",                            
                    defaults: new { controller = "Products", action = "Detail", id = UrlParameter.Optional, title = UrlParameter.Optional });

    daha sonra link hazırlarken;

    @Url.RouteUrl("Ürün", new { @Id=item.Id, @title=item.Name }")
    şeklinde oluşturun.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    6 Haziran 2016 Pazartesi 14:24
    Moderatör

Tüm Yanıtlar

  • aman ne yaptınız siz :) şu stringler arasında + operatörünü kullanmaktan bi vazgeçin bence. Çok enteresan şeyler çıkıyo ortaya. Sadece burada değil her konuda.

    RouteConfig'inize Default route u eski haline alıp yeni bir route şablonu tanımlayın;

    routes.MapRoute(
                    name: "Ürün",
                    url: "{controller}/{action}/{id}/{title}",                            
                    defaults: new { controller = "Products", action = "Detail", id = UrlParameter.Optional, title = UrlParameter.Optional });

    daha sonra link hazırlarken;

    @Url.RouteUrl("Ürün", new { @Id=item.Id, @title=item.Name }")
    şeklinde oluşturun.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    6 Haziran 2016 Pazartesi 14:24
    Moderatör
  • Teşekkürler dediğiniz gibi ayarladım.

    Şimdi de id parametresi boş gelemez diyor. 

    home controller içindeki detaylar actionResult'ı id parametresi alıyor . 

    bunu nasıl ayarlayabilirim.?

    aşağıdaki şekilde şuan yazdığım. 

      <a href="@Url.RouteUrl("Urun", new { @id=item.id, @title=item.Name })">Detaylar</a>
    
    
    
      public ActionResult detaylar(int id)
            {}
    
    
    
        routes.MapRoute(
                    name: "Urun",
                    url: "{controller}/{action}/{id}/{title}",
                    defaults: new { controller = "Home", action = "detaylar", id = UrlParameter.Optional, title = UrlParameter.Optional });
    



    Cosh

    9 Haziran 2016 Perşembe 10:17
  • bana bir ammyy id gönderebilirmisiniz. Birçok nedenden dolayı olabilir kodu incelemem lazım.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    9 Haziran 2016 Perşembe 10:35
    Moderatör
  • Selam , 

         Dediğiniz gibi çalışıyordu fakat routeconfig 'de Action="Detaylar" olarak ayarlı olmasına rağmen linki Index olarak yüklüyor sayfa açıldığında. Detaya gitmiyor yani , linke ürün adını ekliyor fakat bunu index sayfasında yapıyor. 

    ROUTECONFIG

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
     routes.MapRoute(
                    name: "UrunDetay",
                    url: "{controller}/{action}/{Id}/{title}",
                    defaults: new { controller = "Home", action = "detaylar", id = UrlParameter.Optional });
                 
     routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
    


    
    <a href="@Url.RouteUrl("UrunDetay", new { @Id = item.productID, @title = item.productName })">Detaylar</a>

    fikriniz var mı?


    Cosh

    16 Haziran 2016 Perşembe 06:20
  •  routes.MapRoute(
                    name: "UrunDetay",
                    url: "{controller}/{action}/d/{Id}/{title}",
                    defaults: new { controller = "Home", action = "Detaylar" });
    şu şekilde denermisin

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    16 Haziran 2016 Perşembe 07:19
    Moderatör
  • http://localhost:51903/Home/Index/d/2634/ZF4-000%20%C5%9EANZIMAN%20MASTER%203%20%C3%87%C4%B0FT%20TEKERL%C4%B0%20ARKADAN%20%C3%87EK%C4%B0%C5%9EL%C4%B0
    şeklinde geliyor ?

    Cosh

    16 Haziran 2016 Perşembe 07:26
  • :)

    Esas link'i düzeltmek gerekiyormuş onu görmemiştim, özür. Yukarıdaki değişikliği geri alın ve;

    <a href="@Url.RouteUrl("UrunDetay", new { @controller="Home", @action="Detaylar", @Id = item.productID, @title = item.productName })">Detaylar</a>
    şeklinde deneyin


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    16 Haziran 2016 Perşembe 07:31
    Moderatör
  •  :)   

    Çok teşekkürler , şimdi sağlam şekilde aktif. :) 


    Cosh

    16 Haziran 2016 Perşembe 08:07