2013-09-28 3 views
0

먼저이 질문에 대한 질문이 있지만 제 문제에 대한 해결책을 찾지 못해서 사과드립니다. 관리자가 사진을 업로드하고 그림 블로그와 같이 게시물로 간주되는 ASP.NET 4.0 Wepforms 웹 사이트에서 작업하고 있습니다. 방문자는 fb 주석을 사용하여 각 그림에 주석을 달 수 있고 그것을 좋아할 수 있습니다. 현재 iam은 각 게시물 (그림)에 대한 쿼리 문자열을 사용합니다. 하지만 이제는 각 URL을 SEO freindly로 만들고 싶습니다.ASP.NET 4.0 웹폼에서 SEO 친숙하지 않은 확장 URL을 동적으로 만드는 방법

  1. 가 관리 업로드, URL이 같은 제목 예 : "www.example.com/posts/mexican-bulldog을"인 것을 각 사진에 대해 고유 한 URL을 확인 : 그러니까 기본적으로 내가 다루는 두 가지가 블로그 엔진 또는 nopCommerce. 현재의 Global.asax에 다음 코드를 사용하여 IAM : 위의 코드 내 문제가 해결되지

    void Application_Start(object sender, EventArgs e) 
        { 
          RegisterRoutes(RouteTable.Routes); 
    
        } 
        public static void RegisterRoutes(RouteCollection routeCollection) 
        { 
         routeCollection.MapPageRoute("RouteForCustomer", "Customer/{Id}", "~/Customer.aspx"); 
    
    
    
         routeCollection.MapPageRoute("RouteForHome", "home", "~/Default.aspx"); 
         routeCollection.MapPageRoute("RouteForTroll", "post", "~/post.aspx"); 
    }  
    

    , 거기에 내가 정적 URL을 지정해야합니다.

  2. 이 게시물을 탐색하려면 사전에 다음 및 이전

고맙습니다 즉!

+0

슬러그를 생성하려면 다음을 확인하십시오. http://stackoverflow.com/questions/2920744/url-slugify-alrogithm-in-c 기존 유사 숫자에 따라 고유 슬러그에 대해 1,2,3에 번호 매기기 논리를 추가하십시오 데이터베이스에 슬러그. –

답변

1

귀하의 요구 사항에 따라 방금 구현 한 간단한 방법을 살펴보십시오. 같은 것을 할 수있는 더 많은 방법이있을 수 있습니다. 이 단지입니다

public class Global : HttpApplication 
    { 
     public static List<Images> col = new List<Images>(); 
     private void GetImages() 
     { 
      // Build this collection as per your requirement. This is just a sample. 
      // Logic is to store current, next, previous image details for current displaying image/page. 
      // Hope while storing image each will have unique name before saving and will have all details in db like path, display name, etc. 

      col.Add(new Images("orderedList0.png", "orderedList0", "orderedList1", "")); 
      col.Add(new Images("orderedList1.png", "orderedList1", "orderedList2", "orderedList0")); 
      col.Add(new Images("orderedList2.png", "orderedList2", "orderedList3", "orderedList1")); 
      col.Add(new Images("orderedList3.png", "orderedList3", "orderedList4", "orderedList2")); 
      col.Add(new Images("orderedList4.png", "orderedList4", "", "orderedList3")); 
     } 

     void Application_Start(object sender, EventArgs e) 
     { 
      GetImages();    
      RegisterRoutes(RouteTable.Routes); 
     } 

     public static void RegisterRoutes(RouteCollection routeCollection) 
     { 
      routeCollection.MapPageRoute("RouteForImage", "Posts/{Name}", "~/Posts.aspx"); 

     } 
} 

Posts.aspx

protected void Page_PreRender(object sender, EventArgs e) 
     { 
      string currentImage = RouteData.Values["Name"].ToString(); 
      if (!String.IsNullOrEmpty(currentImage)) 
      { 
       Images image = Global.col.Find(x => x.CurrentImage == currentImage); 
       // Get Current Image URL where actually it is stored using from image variable and render/set image path where you want to using image.CurrentImagePhysicalName 


       // Set Next - Previous Image urls 
       if (!String.IsNullOrEmpty(image.NextImage)) 
       { 
        hyperlink_next.Visible = true; 
        hyperlink_next.Text = image.NextImage; 
        hyperlink_next.NavigateUrl = GetRouteUrl("RouteForImage", new { Name = image.NextImage });      
       } 
       else 
        hyperlink_next.Visible = false; 

       if (!String.IsNullOrEmpty(image.PreviousImage)) 
       { 
        hyperlink_previous.Visible = true; 
        hyperlink_previous.Text = image.PreviousImage; 
        hyperlink_previous.NavigateUrl = GetRouteUrl("RouteForImage", new { Name = image.PreviousImage }); 
       } 
       else 
        hyperlink_previous.Visible = false; 
      } 
     } 

:

나는 클래스 생성 : 이미지

public class Images 
    {  
     public string CurrentImage { get; set; } 
     public string NextImage { get; set; } 
     public string PreviousImage { get; set; } 
     public string CurrentImagePhysicalName { get; set; } 
     public Images(string currentImagePhysicalName, string Current, string Next, string Previous) 
     { 
      this.CurrentImagePhysicalName = currentImagePhysicalName; 
      this.CurrentImage = Current; 
      this.NextImage = Next; 
      this.PreviousImage = Previous; 
     } 
    } 

경로를 등록하고 응용 프로그램 시작시 이미지 수집을 초기화 샘플 데모. 여기서 주요 아이디어는 동적 URL을 처리하기 위해 RouteData.Values["Name"].ToString()을 처리하는 것이 었습니다.

희망이 유용 할 것입니다.

+0

고맙습니다. 답장을 보내 주시면 해결책을 준 것처럼 보입니다. 구현 한 후에 알려 드리겠습니다. –