2016-12-25 1 views
6

AngularJS 2에서 ASP.NET MVC (코어가 아닌)를 사용하려고하고 라우팅에 문제가 있습니다. RouteConfig.cs 최초 Angular 2 - ASP.NET MVC를 사용한 라우팅

, 내 app.route.ts에서

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

// when the user types in a link handled by client side routing to the address bar 
// or refreshes the page, that triggers the server routing. The server should pass 
// that onto the client, so Angular can handle the route 
routes.MapRoute(
    name: "spa-fallback", 
    url: "{*url}", 
    defaults: new { controller = "Home", action = "Index" } 
); 

(각 경로를) 정의 된 경로를 따라 한 난 그냥 경로의 몇 가지를 정의했습니다. 내 기본 경로는 내 app.route.ts에서 각 응용 프로그램과 기본 경로는 저를 리디렉션로드 내가 응용 프로그램을 실행할 때, 내 서버 경로/홈/색인 벌금 제공됩니다

export const router: Routes = [{ 
     path: '', 
     redirectTo: 'auctions/e231', 
     pathMatch: 'full' 
    }, 
    { 
     path: 'auctions/:id', 
     component: AuctionComponent, 
     children: [] 
    } 
]; 

같은 다른 경로로 리디렉션 경매/E231에 내 브라우저의 최종 URL이 예상대로

http://localhost:53796/auctions/e231 

모든 작동이됩니다하지만이 URL로 페이지를 새로 고침 할 때, 나는 그것이 찾기 때문도 예상된다 찾을 수없는 자원에 대한 서버 오류를 얻을 컨트롤러는 MVC에없는 Auctions라는 이름을 갖습니다. RouteConfig.cs의 내 spa-fallback 경로가 선택되지 않은 이유를 알고 싶습니다. 또한/계정/로그인 및 다른 같은 내 MVC 컨트롤러의 작업 중 일부를 사용할 수 있기 때문에 asp.net mvc이이 시나리오를 처리하는 더 좋은 방법이 있습니다.

+0

왜 서버 측에서 하나의 경로를 사용하지 않고 클라이언트 측에서 하나의 경로를 사용하지 않습니까? 나는 면도기에 집보기를 가져오고 html과 js에서 각도 라우터가 작동하도록 하시겠습니까? –

+0

Ang2와 함께 asp.net MVC (사용자 인터페이스)를 사용하는 것은 좋지 않습니다. –

+0

@HassanFalahi 예. 요구 사항은 ID 서버를 사용하고 사용자 관리를 위해 템플릿을 사용하는 것입니다. –

답변

4

내 의견으로는 최선의 방법은 아니지만 그럼에도 불구하고 작동했습니다. 나는 그것을 나의 길에서 제약을 사용하여 일하게했다. 내 기본 경로를 다음과 같이 업데이트했습니다 :

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    constraints: new { controller = "Home|Account|Upload|Resource" } // this is basically a regular expression 
); 

여기에는 4 개의 MVC 컨트롤러 (홈, 계정, 업로드, 리소스) 만있었습니다. 내 spa-fallback 경로가 기본 경로 아래에 있으므로이 컨트롤러 이름 이외의 다른 문자를 입력하면 angle은 기본/Home/Index 서버 경로를 사용하여 해당 경로에서 찾으려고 시도합니다.

나는 그것이 누군가를 돕기를 바랍니다.

4

문제는 페이지를 새로 고치면 첫 번째 경로가 사용됩니다. 이름이 Auctions 인 컨트롤러를 얻으려고하기 때문입니다. 첫 번째 경로 구성 (기본값)을 제거하고 두 번째 (spa-fallback) 만 사용하면 괜찮습니다. 내 프로젝트에서 사용한 방법입니다. 스파 전환하기 전에 넣어야합니다. 다른 mvc 경로를 다른 경로로 리디렉션하고 싶습니다. mvc 컨트롤러.

+0

더 많은 상향 회선을 제공 할 수 있다면 ... – JenonD

+0

생명의 은인을 위해이 솔루션을 찾고 있습니까? 아주 오랜 시간. 무리 감사 –