블레이저 요소 작성할 때, 페이지 맵핑 경로를 아래와 같이 지정하는 경우가 많습니다.
@page "/admin/users"
또는 아래와 같이 하기도 합니다.
@attribute [Route("/admin/users")]
그런데, 주소가 전부 문자열 상수이고, 블레이저의 컴파일 기능이 아직은 좀 불안한 지라, 사이트 맵이 좀 달라지면, 이 문자열들을 찾는데 빌드가 여러 번 필요할 수도 있습니다.
경로 관리를 좀 용이하게 하기 위해, 아래와 같은 경로 지정 패턴을 제안해 봅니다.
// Users.razor
@attribute [Route(Path)]
@code {
private const string Path = "/admin/users";
public static string Url() => Path;
}
// User.razor
@attribute [Route(Path)]
@code {
private const string BasePath = "/admin/user";
private const string UserIdParam = "/{userId:guid}";
private const string Path = BasePath + UserIdParam;
public static string Url(Guid id) => BasePath + "/" + id.ToString();
}
// OtherPage.razor
private void MoveTo_Users() =>
Navication.NavigateTo(AdminUsers.Url());
private void MoveTo_User(Guid userId) =>
Navication.NavigateTo(AdminUser.Url(userId));