www.mysite.com/employee 및 www.mysite.com/employee/ asp.net MVC 라우팅 차이는 JQGrid를 사용하는 동안

StackOverflow https://stackoverflow.com/questions/1417200

문제

프로젝트 중 하나에 ASP.NET MVC를 사용하고 있습니다. 여기에 나는 호출 할 수있는 직원 컨트롤러가 있습니다. www.mysite.com/employee/ URL.

또한 Followng를 사용하여 데이터를 가져 오는 JQGRID를 사용했습니다.

URL : "GetGridData"

동일하게 테스트하는 동안 나는 그것을 발견했습니다

  1. 브라우저에서 www.mysite.com/employee/를 입력하면

    www.mysite.com/employee/getgriddata

  2. 브라우저에 www.mysite.com/employee를 입력하면 전화를받습니다.

    www.mysite.com/getgriddata

참고 : 두 번째 호출의 결국 누락 /.

최종 사용자가 브라우저 에이 URL을 입력 할 수있는 가능성이 있으므로이를 수정하는 방법.

도움이 되었습니까?

해결책

JQGrid에게 웹 서비스 호출을 요청하는 방법을 살펴 보겠습니다. 기본적으로 MVC 라우팅 엔진에 대해 전혀 알지 못하기 때문입니다. 이는 모두 클라이언트 측면입니다.

페이지가있는 경우 1 분 동안 MVC 밖에서 스텝핑합니다.

example.com/page1.aspx

다른 페이지에 대한 상대적 링크가 있습니다.

<a href="page2.aspx">Click here</a>

브라우저는 page1.aspx와 같은 수준에서 page2.aspx를 찾습니다.

example.com/page2.aspx

Page1을 새 폴더로 이동하면 :

example.com/newfolder/page1.aspx

브라우저가 요청합니다

example.com/newfolder/page2.aspx

사용자가 링크를 클릭하면

GetGridData 호출에도 마찬가지입니다. 이는 웹 브라우저에서 사용 가능한 정보를 기반으로 서버로 만들어집니다.

따라서 페이지가 응답하면 다음과 같습니다.

example.com/employee

다음에 대한 상대적인 요청을 요청합니다.

getgriddata

브라우저는 해당 요청을 직원과 같은 수준으로 보냅니다.

example.com/getgridData

라우팅 엔진이 해당 요청에 대한 경로를 찾을 수 없기 때문에 실패합니다.

라우팅 시스템을 통해 getGridData 통화의 URL을 생성하는 것을 살펴 봐야합니다.

url: "/Employee/GetGridData"

추가 할 최종 편집

언급하는 것을 잊어 버렸습니다 UrlHelper 동작 방법 이것을 위해 :

url: <%=Url.Action("GetGridData")%>

이것은 현재 컨트롤러에서 getGridData 메소드의 경로를 생성합니다. 다른 컨트롤러에 액세스하거나 일부 값을 전달 해야하는 경우 도움이되는 과부하가 있습니다.

다른 팁

경로 디버깅을 시도해보십시오.Phil Haack : ASP.NET 라우팅 디버거

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