2010-07-07 5 views
3

웹 사이트에서 멋진 URL을 사용하면 어떤 이점이 있는지 분명합니다.여러 매개 변수를 기반으로 한 좋은 URL

예제를 사용하여 내가 묻는 것을 명확히 설명합니다. 여기에있는 엔티티가 이름으로 고유하게 식별 될 수 없음에 유의하십시오.

사용자가 특정 위치에서 사용할 수있는 사이트에 등록 된 모든 라디오 방송국을보고 싶다고합시다. 이것은 URL에 액세스하여 수행됩니다 http://example.com/radios/1234/radio-paris-eiffel-tower

  • 1234 -이 경우는 위치
  • 라디오 - 파리 - 에펠 타워의 고유 한 ID입니다 - URL이 친절하게 바로 추가 정보입니다. 사용자가 특정 라디오 방송국들이 사용할 수 accessibile입니다 모든 위치를보고 싶어하면

: http://example.com/locations/abcd/radio-xyz

  • ABCD는 - 여기 라디오 이제

에게 질문을 식별 : 무엇을 특정 위치 (예 : 이름, 빈도, ...)에서 특정 라디오 방송국의 라디오 방송국 세부 정보에 액세스하기위한 좋은 URL이 될 수 있습니까?

http://example.com/radio/1234/radio-paris-eiffel-tower/abcd/radio-xyz 또는 http://example.com/radio/details?radioid=1234&locationid=abcd/radio-xyz-at-paris-eiffel-tower

당신이 어떤 제안이 있고 또한 저에게 당신의 제안 URL에 대한 경로를 코딩하는 방법에 대한 예제를 적어주세요 수 있습니까?

대단히 감사합니다.

PS : 실제로 대신 더 좋은 http://example.com/radios/1234/radio-paris-eiffel-tower

의 위의 URL에 대한 생각이 http://example.com/1234/radio-paris-eiffel-tower/radios/

wdyt 것입니까?

어떻게 이러한 경로를 RadiosController.ListByLocation (int locationId)에 매핑 할 수 있습니까?

답변

2

다음은 맞춤 경로를 사용하는 방법입니다. 내가 Global.asax.cs 파일에이 설정 한 :

public class SomeController : Controller 
{ 
    public ActionResult SomeAction(string radioId, string locationId) 
    { 
     ViewData["radioId"] = radioId; 
     ViewData["locationId"] = locationId; 

     return View(); 
    } 

} 

그리고/라디오/세부로 시작하는 URL로 응답합니다 :

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Radio and Frequency Route", // Route name 
     "radio/details/{radioId}/{locationId}/{someUnusedName}", // URL with parameters 
     new 
     { 
      controller = "Some", 
      action = "SomeAction", 
      radioId = string.Empty, 
      locationId = string.Empty 
     } 
    ); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
    ); 

} 

컨트롤러는 매우 간단하다

http://localhost:51149/radio/details/123/456/moo 
http://localhost:51149/radio/details/abc/xyz/foo 

이제 원하는대로 모든 종류의 친숙한 URL을 구축 할 수 있습니다. 아마도/radio/details 접두사를 다른 것으로 변경하고 싶습니까?

관련 문제