2016-12-08 4 views
0

웹 양식 응용 프로그램에서 ASP.NET 라우팅을 사용하고 있습니다.상대 URL을 사용하여 현재 디렉토리 바로 아래에있는 페이지에 액세스 할 수 있습니까?

과일에 관한 페이지에 produce/fruit 경로가 있다고 가정 해 봅니다.

사과에 관한 페이지에 produce/fruit/apples 경로가 있다고 가정 해 보겠습니다.

그래서 produce/fruit은 페이지와 디렉토리입니다. 이 페이지에서 현재 페이지를 포함 할 필요가없는 상대 URL로 produce/fruit/apples으로 하이퍼 링크를 만들 수 있습니까?

아래의 앵커를 produce/fruit에 사용하면 존재하지 않는 produce/apples으로 연결됩니다. 그러나 동일한 페이지에서 동일한 링크를 produce/fruit/에 사용하면 올바른 페이지/하위 디렉토리로 이동하게됩니다. 물론

<a href="apples">apples</a> 

produce/fruit에서 내 링크는 <a href="fruit/apples">apples</a>이 될 수 있지만, 나는 현재 페이지의 이름을 포함해야하고, 그것은 produce/fruit/에서 작동하지 않을 것입니다.

내가 잊어 버린 정말 간단한 html이있는 것처럼 느껴집니다.

+0

당신은'apples 시도 않았다'? –

+0

당신은'apples'을 시도 했습니까 - Btw'produce/fruit'는 페이지와 디렉토리가 아닙니다. 'produce/fruit'는 페이지이고'produce/fruit /'는 디렉토리입니다. –

+0

'produce/apples /'디렉토리로 이동하지만 현재 디렉토리는 경로에 보관하지 않습니다. – Matt

답변

0

문제는 단순히 현재 URL의 끝에 슬래시 (또는 해당 정보가 부족한 것)가없는 것입니다.

예를 들어 URL이 /produce/fruit이고 href가 apples 인 경우 결과 링크는 /produce/apples이됩니다. 그러나 URL이 produce/fruit/이고 href가 같으면 결과 링크는 /product/fruit/apples이됩니다. 간단히 말해 URL에 후행 슬래시를 항상 사용해야합니다. 이에 도움을하려면 RouteConfig.cs에 routes.AppendTrailingSlash을 활성화 할 수 있습니다

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.AppendTrailingSlash = true; 
+0

우리는 그렇게해야 할 수도 있지만 사이트 콘텐츠의 모든 정적 링크를 업데이트해야합니다. 링크를 통해 링크를 처리하거나 경로별로 라우팅하는 방법을 기대했습니다. – Matt

+0

URL에서 후행 슬래시를 보장 할 수없는 경우 상대 href를 갖는 확실한 방법은 없습니다. 그러나 FWIW에서는 모든 정적 링크를 반드시 업데이트 할 필요는 없습니다. 이 플래그가 작동하는 방식은 MVC가 끝에 슬래시를 포함하도록 URL을 다시 작성한다는 것입니다. 즉, '/ produce/fruit' 링크를 클릭하면 주소 표시 줄의 URL은'/ produce/fruit /'(슬래시 포함)가됩니다. –