none
MVC 4 Query String Routing Ayarı RRS feed

  • Soru

  • Merhabalar. Querystring ile ürünlere tıklandığında parametre göndererek ürün detayını gösteriyorum.

    <a href="/Product?id=@product.UrunID&urunad=@product.UrunAd"></a>


    Burada Mvc'nin routing mekanizmasını kullanmak istiyorum. Ancak aşağıdaki gibi yazdığım halde olmuyor.

      routes.MapRoute(
                   name: "Product",
                   url: "{controller}/{action}/{urunad}",
                   defaults: new { controller = "Product", action = "Index", id = UrlParameter.Optional }
               );

    İlk defa böyle birşey yapmaya çalışmıyorum.Query string kullanmamam  mı gerekiyor ? Eğer öyleyse nasıl bir yöntem izlemem gerekir ?

    • Düzenleyen selow 16 Mayıs 2016 Pazartesi 18:10
    16 Mayıs 2016 Pazartesi 18:09

Yanıtlar

  • Herkese teşekkürler tek tek denedim çözümlerinizi. Önay Bey'in yazdığı çözüm ile sonuca ulaştım. Ancak bu işlemden sonra ajax işlemimde sıkıntı yaşamaya başladım. Dropdownlisten seçilen renge göre kalan stok sayısını yazdırıyordum. Ancak şimdi ajax ile yolladiğim yola gitmez oldu. Yazdığım son kodları ve ajaxı paylaşıyorum sıkıntı nedir acaba ?

    RouteConfig

                 routes.MapRoute(
                      name: "Product",
                      url: "{controller}/{id}/{urunad}",
                      defaults: new { id = UrlParameter.Optional, urunad = "", action = "Index" }
                  );

    Ürünün detayına gitmek için kullandığım link

    @Html.RouteLink(@product.UrunAd,"Product", new {id=product.UrunID, action="Index", controller="Product",urunad= product.UrunAd.ToString()})

    Ajax kodum

     $.ajax({
                        url: '@Url.Action("StokSayisiniGetir", "Product")',
                        type: 'GET',
                        data: { "id": selectedValue },
                        success: function (result) {
                            $('#count').text(result);
                            stok = result;
                            if (result == 1) {
                                $('#up').attr("disabled", true);
                            }
                            else {
                                $('#up').attr("disabled", false);
                            }
    
                        }
                    });

    Buda controller tarafı

    public ActionResult StokSayisiniGetir(int id)
            {
              int stok = (from adet in ent.UrunRenkleri
                          where id == adet.UrunRenkId
                          select adet.Adet).FirstOrDefault();
    
              return Content(stok.ToString(), "text/plain");
            }

    17 Mayıs 2016 Salı 09:31

Tüm Yanıtlar

  •   <li><a href="@Url.Action("Urunler", "Urun", new { @action = "Urunler", @adi = item.Adı.ToUrlString(), KatId = item.Id })">@item.Adı</a></li>

    routes.MapRoute(
                name: "Urunler",
                url: "{action}/{KatId}/{adi}",
                defaults: new { controller = "Urun", action = "Urunler", KatId = UrlParameter.Optional, adi = "" },
                namespaces: new string[] { "OrnekProje.Controllers" }
                );

    bu şekilde dener misin.


    • Düzenleyen A_BLR 16 Mayıs 2016 Pazartesi 19:14
    16 Mayıs 2016 Pazartesi 19:12
  • üç parçalı routing tanımlıyorsanız ve default routing ile aynıysa ilk gördüğü nü çalıştıracak, routing tanımını defaultun üzerine çıkarıp dene ya da daha iyisi routing şablonunu değiştir, default ile aynı olmasın. mesela en sonuna .html ekle. Ayrıca linkleri Url.RouteLink() ile yap.

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

    16 Mayıs 2016 Pazartesi 19:24
    Moderatör

  • routes.MapRoute(
                   name: "Product",
                   url: "{controller}/{action}/{urunad}",
                   defaults: new { controller = "Product", action = "Index", id = UrlParameter.Optional, adi = UrlParameter.Optional }
               );
    <a href="/Product/@product.UrunID/@product.UrunAd"></a>


    şeklinde dener misin?


    i can change the world, just need the source code..

    16 Mayıs 2016 Pazartesi 22:28
  • Herkese teşekkürler tek tek denedim çözümlerinizi. Önay Bey'in yazdığı çözüm ile sonuca ulaştım. Ancak bu işlemden sonra ajax işlemimde sıkıntı yaşamaya başladım. Dropdownlisten seçilen renge göre kalan stok sayısını yazdırıyordum. Ancak şimdi ajax ile yolladiğim yola gitmez oldu. Yazdığım son kodları ve ajaxı paylaşıyorum sıkıntı nedir acaba ?

    RouteConfig

                 routes.MapRoute(
                      name: "Product",
                      url: "{controller}/{id}/{urunad}",
                      defaults: new { id = UrlParameter.Optional, urunad = "", action = "Index" }
                  );

    Ürünün detayına gitmek için kullandığım link

    @Html.RouteLink(@product.UrunAd,"Product", new {id=product.UrunID, action="Index", controller="Product",urunad= product.UrunAd.ToString()})

    Ajax kodum

     $.ajax({
                        url: '@Url.Action("StokSayisiniGetir", "Product")',
                        type: 'GET',
                        data: { "id": selectedValue },
                        success: function (result) {
                            $('#count').text(result);
                            stok = result;
                            if (result == 1) {
                                $('#up').attr("disabled", true);
                            }
                            else {
                                $('#up').attr("disabled", false);
                            }
    
                        }
                    });

    Buda controller tarafı

    public ActionResult StokSayisiniGetir(int id)
            {
              int stok = (from adet in ent.UrunRenkleri
                          where id == adet.UrunRenkId
                          select adet.Adet).FirstOrDefault();
    
              return Content(stok.ToString(), "text/plain");
            }

    17 Mayıs 2016 Salı 09:31