2017-03-18 1 views
2

내 asp.net mvc 응용 프로그램의 URL을 사용자 정의하고 싶습니다. 현재 내가 asp.net MVC 4.5asp.net mvc의 URL을 사용자 정의하는 방법

케이스를하고 있어요 : 1

Current URL : localhost/Country/Index/param1 
Expected URL : localhost/param1 

케이스 : 사전에 2

Current URL : (1) localhost/Country/Index/param1 (Param1 is name of country) 
       (2) localhost/State/Index/param11 (param11 is name of state) 

Expected URL : localhost/param1/param11 (I need second url like this.) 

고맙습니다.

+0

당신은 할 수 없습니다. 'param1'이 기존 국가와 일치하는지 확인하기 위해 저장소를 찾을 수있는 제약 조건을 만들지 않는다면 컨트롤러와 액션 메소드를 구분할 방법이 필요합니다. 그러나 특정 경로를 정의하여'../ Country/param1'이라고하는 URL을 생성 할 수 있습니다 –

+0

Thanx Stephen .. "case -1"이 가능합니까? – Ashrafali

+0

둘 다 가능하지만, 국가의 데이터베이스를 검색하고'param1'의 값이 유효한 국가인지 확인하는 경로 제약 조건을 만드는 것을 의미합니다. 그러나 그것은 모든 요청에 ​​대해 호출 될 것이므로 실제로는 좋은 생각이 아닙니다. –

답변

2

결과를 얻으려면 각 이벤트마다 별도의 라우터를 만드십시오.

현재 아래와 같은 기본 경로를 사용 중일 수 있습니다.

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

또는 다른 경로를 만들어보세요.

내 제안은 모든 이벤트에 대해 경로를 작성하는 것입니다. like : 원하는 결과를 얻으려면 param1 및 param11을 사용하여 경로를 만듭니다.

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

다른 이벤트 및 메소드의 경우와 같습니다.

0

ASP.net MVC는 라우팅을 기반으로 요청을 처리합니다. 라우팅은 라우팅 테이블에서 가져온 데이터에서 작동합니다. 그래서 기본적으로 최소한 컨트롤러와 action.But의 MVC는 우리에게 다음과 같이 URL을 변경하는 옵션을 제공해야 할 필요가 : 같은 MVC5에서

routes.MapRoute(
       name: "Test", 
       url: "myURl/{param1}", 
       defaults: new { controller = "myURl", action = "actualActionName", id = UrlParameter.Optional } 
      ); 

이 속성은 라우팅하여 수행 할 수 있습니다.