none
url routing asp.net 4.0 hatası. RRS feed

  • Soru

  • aslında bu konuyu açmıştım. sanırım tam olarak sorunumu anlatamadım. 

    Default.aspx sayfam...

      <asp:Repeater ID="Repeater1" runat="server">
                            <ItemTemplate>
                                <h3>
                                    <a href="<%#UrlDuzenleme.ReWritePath(Eval("id").ToString(),Eval("kategori").ToString()) %>">
                                        <%# Eval("kategori")%></a> || <a href="<%#UrlDuzenleme.ReWritePath(Eval("id").ToString(),Eval("baslik").ToString()) %>">
                                            <%# Eval("baslik")%></a>
                                </h3>
        </ItemTemplate>
                        </asp:Repeater>

    Global.asax sayfam.

       void Application_Start(object sender, EventArgs e)
        {
            this.RegisterRoutes(RouteTable.Routes);
        }
    
        void RegisterRoutes(RouteCollection routes)
        {
            routes.MapPageRoute("Haberler", "{id}/{baslik}", "~/Default2.aspx");
            routes.MapPageRoute("Haberler2", "{id/}{kategori}", "~/Kategori.aspx");
        }

    şimdi ben "polis" kategorisine kliklediğimde beni ayrı bir sayfaya  (Kategori.aspx) "tsk norveç gemisine müdahale ettiyi" kliklediğimde beni başka bir sayfaya (Default2.aspx) götürmesini istiyorum. benim sorunum Polis linkini bir türlü istediğim Kategori.aspx sayfasına yönlendiremedim. diğeri gayet sağlıklı çalışıyor...


    kendi imkanlarıyla atomu parçalayan adam!

    7 Şubat 2014 Cuma 22:17

Yanıtlar

  • Önceki açtığınız konuda sorunuz anlaşılamıyordu ve eksikti. Bu sefer sorunun ne olduğu açıkça görünüyor.

    Aslında sağlıklı çalışmıyordu, İlk sorun iki routing'in de birbirinin aynı olması. 

    Diğeri de (çalışmaya engel olmasa da) url oluşturma yönteminiz.

    Ayrıca 2. routingde slash ı yanlış yere koymuşsunuz

        void RegisterRoutes(RouteCollection routes)
        {
            routes.MapPageRoute("Haberler", "haber/{id}/{baslik}", "~/Default2.aspx");
            routes.MapPageRoute("Haberler2", "kategori/{id}/{kategori}", "~/Kategori.aspx");
        }

    routing şablonlarınız aynı olduğundan ilk routing çalışıyor ikincisi çalışmıyordu. Yukarıdaki gibi yaparsanız farkı anlayacak ve doğru routing yapacak.

    <asp:Repeater ID="Repeater1" runat="server">
      <ItemTemplate>
        <h3>
          <asp:HyperLink NavigateUrl='<%# GetRouteUrl("Haberler2", new { @id=Eval("Id"), @kategori=Eval("kategori")  }) %>' Text='<%# Eval("kategori")%>' /> 
    ||
    <asp:HyperLink NavigateUrl='<%# GetRouteUrl("Haberler", new { @id=Eval("Id"), @baslik=Eval("baslik") }) %>' Text='<%# Eval("baslik")%>' /> </h3> </ItemTemplate> </asp:Repeater>

    şeklinde düzenlerseniz istediğiniz olacak. Bunun dışında patinaj çekip durursunuz.


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


    7 Şubat 2014 Cuma 22:42
    Moderatör
  • Evet gördüm, ancak bana pek kullanışlı görünmedi. ANSI olmayan binlerce karakter var, hepsini teker teker replace etmek pek mümkün görünmüyor. Esas önemli olan url'deki &, /, ? gibi sembolleri temizlemektir. Çünkü urlyi bozar. Bu konu hakkında linkini verdiğim yazımı incelermisin;

    http://mvcblog.org/Home/Post/38/urlrewriting-i%C3%A7in-url-filtreleme.html


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

    • Yanıt Olarak İşaretleyen Tech Worm 8 Şubat 2014 Cumartesi 12:08
    8 Şubat 2014 Cumartesi 12:06
    Moderatör

Tüm Yanıtlar

  • Önceki açtığınız konuda sorunuz anlaşılamıyordu ve eksikti. Bu sefer sorunun ne olduğu açıkça görünüyor.

    Aslında sağlıklı çalışmıyordu, İlk sorun iki routing'in de birbirinin aynı olması. 

    Diğeri de (çalışmaya engel olmasa da) url oluşturma yönteminiz.

    Ayrıca 2. routingde slash ı yanlış yere koymuşsunuz

        void RegisterRoutes(RouteCollection routes)
        {
            routes.MapPageRoute("Haberler", "haber/{id}/{baslik}", "~/Default2.aspx");
            routes.MapPageRoute("Haberler2", "kategori/{id}/{kategori}", "~/Kategori.aspx");
        }

    routing şablonlarınız aynı olduğundan ilk routing çalışıyor ikincisi çalışmıyordu. Yukarıdaki gibi yaparsanız farkı anlayacak ve doğru routing yapacak.

    <asp:Repeater ID="Repeater1" runat="server">
      <ItemTemplate>
        <h3>
          <asp:HyperLink NavigateUrl='<%# GetRouteUrl("Haberler2", new { @id=Eval("Id"), @kategori=Eval("kategori")  }) %>' Text='<%# Eval("kategori")%>' /> 
    ||
    <asp:HyperLink NavigateUrl='<%# GetRouteUrl("Haberler", new { @id=Eval("Id"), @baslik=Eval("baslik") }) %>' Text='<%# Eval("baslik")%>' /> </h3> </ItemTemplate> </asp:Repeater>

    şeklinde düzenlerseniz istediğiniz olacak. Bunun dışında patinaj çekip durursunuz.


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


    7 Şubat 2014 Cuma 22:42
    Moderatör
  •  hocam çok teşekkür. walla gayet sağlıklı çalıştı. son olarak benim urlduzenleme diye bir class dosyam var türkçe kelimleri temizlemek için. bunu denedim ama burda bu bi türlü uygulayamadım.


    kendi imkanlarıyla atomu parçalayan adam!

    8 Şubat 2014 Cumartesi 09:56
  • Evet gördüm, ancak bana pek kullanışlı görünmedi. ANSI olmayan binlerce karakter var, hepsini teker teker replace etmek pek mümkün görünmüyor. Esas önemli olan url'deki &, /, ? gibi sembolleri temizlemektir. Çünkü urlyi bozar. Bu konu hakkında linkini verdiğim yazımı incelermisin;

    http://mvcblog.org/Home/Post/38/urlrewriting-i%C3%A7in-url-filtreleme.html


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

    • Yanıt Olarak İşaretleyen Tech Worm 8 Şubat 2014 Cumartesi 12:08
    8 Şubat 2014 Cumartesi 12:06
    Moderatör
  • çok teşekkür ederim.

    kendi imkanlarıyla atomu parçalayan adam!

    8 Şubat 2014 Cumartesi 12:08