문제

가 NancyFX 지원 ASP.NET MVC 같은'모든'경고를 포함한다.내가 필요로 하나,기본적으로 일치하는 모든 URL.이것은 매우 편리에 대한 건물의 단 페이지 신청입니다.

하는 것이 가능할까요?

도움이 되었습니까?

해결책

예, regex를 사용하여

Get[@"/(.*)"] = parameters => {
    return View["viewname", parameters];
};
.

그러나 NANCYFX를 사용하여 단일 페이지 응용 프로그램을 구축 할 때 실제로 필요하지 않습니다. 모든 라우팅 로직으로 GET 및 POST를 사용할 수 있으며 여전히 단일 페이지 앱이 있습니다.

다른 팁

Tested in Nancy version 0.23.2

Get[@"/(.*)"] 작동되지 않으로 나를 잡는 모든 경로입니다.노 "/", "/foo/bar", 고,더 이상 노선을 잡을 것이라고.는 것 같이 많지는 않을 정의할 Get["/"] 경로에 대한 절차를 제공합니다.아무것도 다른 것을 잡으(도 Get["{uri*}"]).여기에 내가 어떻게 끝났을 정의하는 나의 노선(계속 마음에서 나는 이 일을 위해 각 응용 프로그램):

Get["/views/{uri*}"] = _ => { return "A partial view..."; };
Get["/"] =
Get["/{uri*}"] = _ =>
{
    var uri = (string)_.uri;// The captured route
    // If you're using OWIN, you can also get a reference to the captured route with:
    var environment = this.Context.GetOwinEnvironment();// GetOwinEnvironment is in the 'Nancy.Owin' namespace
    var requestPath = (string)environment["owin.RequestPath"];
    return View["views/defaultLayout.html"];
};

을 이해하는 것이 중요 패턴 득점.로 패턴을 가중되는 경우에,두 개의 노선과 일치 같은 url 의 세그먼트,더 높은 점수를 승리합니다.Catch-all pattern 중 0 고도 /views/{uri*} 로 패턴은 또한 모든 시작과 리터럴는 가중 10000, 니다,그래서 승리에는 모든 경로로 시작 /views.

여기에 더 많은 정보 액세스 Owin 의 환경변수.참고 캡처 uri 변수 requestPath 이 다소 차이가있을 수 있습니다.이 requestPath 로 시작합니다 / 는 곳으로 uri 변하지 않습니다.또한,는 경우에 일치하는 경로 패턴 Get["/"], uri 될 것입 nullrequestPath 될 것입 "/".

로 반환하는 부분 html 파일에 기반한 url 경로,그리고 다른 모든 경로에 반환의 기본 레이아웃을 하는 페이지는 것이트 스트랩 마련되어 있습니다.

@Synhershko의 솔루션이 작동하지 않는 사람에게 업데이트 된 답변입니다.시도해보십시오 :

Get[@"^(.*)$"] = parameters => {
    return "hi";
};
.

이렇게하면 색인 페이지를 제외한 모든 경로가 캡처됩니다.나는 이것이 각도의 맥락에서 작동하는지 확실하지 않지만, 하나의 핸들러가있는 간단한 서버를 함께 해킹하려고 할 때 저에게 효과가있었습니다.

@synhershko가 제공 한 답변이 저를 위해 작동하지 않습니다.그것은 / users / 2 또는 더 많은 세그먼트가 들어있는 다른 경로를 처리하지 않습니다.

코드 아래가 내 컴퓨터에서 작동합니다.) :

public class IndexModule : NancyModule
{
    dynamic IndexPage() { return View["Index"]; }

    public IndexModule()
    {
        Get["/"] = _ => { return IndexPage(); };
        Get["/(.*)"] = _ => { return IndexPage(); };
        Get["/(.*)/(.*)"] = _ => { return IndexPage(); };
        Get["/(.*)/(.*)/(.*)"] = _ => { return IndexPage(); };
    }
}
.

내 솔루션은 완벽하지 않아 모든 것 과 일치하지 않습니다.나는 가장 긴 각형 경로 에서처럼 많은 '/(.*)'을 반복했다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top