범위를 필터링하기위한 여러 매개 변수를받는 컨트롤러 동작을 만든 다음 최종 매개 변수는 결과를 페이징하는 데 필요한 페이징 매개 변수입니다.MVC4 Route의 중간 매개 변수 (선택 사항)
//Example Action
public ActionResult Details(string time, string regionscope, string localscope = null, int page = 1) {
}
//RouteConfig.cs
routes.MapRoute(
name: "LocationWithLocalScopeRoute",
url: "/Details/{time}/{regionscope}/{localscope}/{page}",
defaults: new
{
controller = "Location",
action = "Details",
localscope = UrlParameter.Optional
}
);
내가 localscope
매개 변수를 제외 할 수 있지만 (여전히 꽤 URL을 유지하면서) 아직 page
매개 변수는 컨트롤러에 의해 페이지로 해석 될 수있다 어쨌든이 있나요?
// Test URLs
/Details/May-17/Mid/1
/Details/May-17/Mid/Bumville/1
는 내가 기존 경로 전에 경로를 추가 할 수 있습니다 알고
//RouteConfig.cs
routes.MapRoute(
name: "LocationWithNoLocalScopeRoute",
url: "/Details/{time}/{regionscope}/{page}",
defaults: new
{
controller = "Location",
action = "Details"
}
);
나는 또한 내가 다른 매개 변수의 전에 page
를 둘 수 있었다 알고 있습니다.
routes.MapRoute(
name: "LocationWithLocalScopeRoute",
url: "/Details/{page}/{time}/{regionscope}/{localscope}",
defaults: new
{
controller = "Location",
action = "Details",
localscope = UrlParameter.Optional
}
);
테스트 URL이 작동하는 동안 하나의 경로 정의에서 모두 작동하도록 만드는 방법이 있는지 궁금한가요?
짧은 답변은 아니오입니다 (여러 경로를 만들지 않는 한). 마지막 매개 변수 만 선택적 일 수 있습니다. –
@StephenMuecke 다른 옵션 중 내가 추가 한 것은 무엇입니까? 또는 다른 방법이 있다면, 나는 그것을 읽은 것을 기쁘게 생각합니다. – SomeShinyObject
개인적으로 나는 페이지 번호가 마지막 인 페이지 번호를 갖는 URL로서 더 의미가 있다고 생각하기 때문에 첫 번째 옵션을 사용할 것입니다. –