Segment Feature 사용하기
Source: Dev.to
Overview
Segment 속성은 ASPX 페이지에 적용할 수 있습니다. 이 속성을 활성화하면 .aspx 파일 뒤에 나타나는 모든 경로 부분이 세그먼트로 간주되어 동일한 실행 페이지로 라우팅됩니다. 이 기능을 사용하면 쿼리 문자열 없이도 URL 경로를 완전히 제어할 수 있습니다.
Enabling Segment on a Page
...
Example Paths
If Segment is enabled on /page/about.aspx
/page/about.aspx/segment1/segment2/.../segmentN
파일 /page/about.aspx가 여전히 실행되며, 추가된 부분은 세그먼트로 사용할 수 있습니다.
If Segment is enabled on /page/about/Default.aspx
다음 두 URL 모두 동작합니다:
/page/about/Default.aspx/segment1/segment2/.../segmentN
/page/about/segment1/segment2/.../segmentN
Accessing Segment Values
세그먼트는 0부터 시작하는 인덱스를 가집니다.
// Given URL: /page/about/segment1/segment2/segment3
Segment.GetValue(0) // returns "segment1"
Segment.GetValue(1) // returns "segment2"
Segment.GetValue(2) // returns "segment3"
In Views (Razor‑style)
segment 1 is: @Segment.GetValue(0)
segment 2 is: @Segment.GetValue(1)
In Classic ASPX Syntax
segment 1 is:
segment 2 is:
In Code‑Behind
using CodeBehind;
namespace YourProjectName
{
public partial class DefaultController : CodeBehindController
{
public void PageLoad(HttpContext context)
{
Write(Segment.GetValue(0));
Write(Segment.GetValue(1));
}
}
}
Checking Segment Existence
@if (!Segment.Exist(0))
{
Value does not exist
}
Interaction with MVC Routing
기본 MVC 구성에서는 컨트롤러 라우팅에 대해 Segment 기능이 자동으로 활성화됩니다.
using CodeBehind;
public partial class User : CodeBehindController
{
public void PageLoad(HttpContext context)
{
// path: /user/{id}
Write(Segment.GetValue(0));
}
}
Rewrite ASPX File to Directory
CodeBehind 프레임워크는 .aspx 파일 경로를 디렉터리 이름으로 재작성할 수 있습니다. 이 옵션을 활성화하면 .aspx 확장자를 생략한 라우트가 디렉터리 경로로 처리됩니다.
# CodeBehind options (do not change order)
rewrite_aspx_file_to_directory=true
Example
/page/contact.aspx에 접근할 때/page/contact로 사용- 세그먼트를 계속 추가 가능:
/page/contact/segment1/segment2/.../segmentN
Note: 이 재작성 옵션을 활성화해도 추가적인 처리 오버헤드가 발생하지 않습니다.
Limitations
특정 파일에 Segment가 활성화된 경우, 해당 파일이 포함된 하위 디렉터리의 ASPX 뷰 파일에 접근할 수 없게 됩니다.
예를 들어, /page/about/Default.aspx에 Segment가 활성화되면 /page/about/license/Default.aspx 경로는 접근이 불가능합니다.
Resources
- CodeBehind on GitHub:
- CodeBehind NuGet package:
- CodeBehind documentation page: