2011-09-28 4 views
0

기본 경로가 쿼리 매개 변수를 기본 동작으로 전달하도록하려는 MVC2 프로젝트가 있습니다. 내가 지금 제대로 검색 컨트롤러의 index 액션에 라우팅, http://mysite에 가면MVC 기본 경로에서 쿼리 매개 변수를 전달하는 방법은 무엇입니까?

는 지금은이

routes.MapRoute(
    "Default", // Route name 
    "", // URL pattern 
    new { controller = "Search", action = "Index" } 
); 

같은 경로를 가지고 있지만, http://mysite?theme=yellow를 입력하면, 다음 theme 매개 변수는 아니다 같은 행동으로 넘어갔습니다.

주어진 검색어 매개 변수를 전달하는 기본 경로를 만들려면 어떻게해야합니까?

+0

그 말이 맞지 않습니다. 'http : // mysite? theme = yellow'는 기본 컨트롤러를 해결하고 쿼리 스트링을 통과해야하지만, 브라우저의 URL을 글자 그대로 'http : // mysite/Search/Index? theme = yellow'로 변경해서는 안됩니다. . 리디렉션 코드, RedirectToAction 호출 등이 없습니까? –

+0

좋아, 아마도 내가 잘못 말했어. 리디렉션되지 않았고 검색 컨트롤러 및 색인 작업으로 넘어 갔다. 나는 그 질문을 바꾸고있다. – Nilzor

답변

1

라우팅은 쿼리 매개 변수와 아무 관련이 없습니다. 그들은 URL 패턴과 일치하는 컨트롤러에서 액세스 할 수 있습니다.

그래서, "{controller}/{action}/{id}", // URL pattern

충분해야하며, 컨트롤러는 요청 속성을 통해 매개 변수를 쿼리 얻을 수 있습니다 :

var theme = Request["theme"]; 

또는 당신이 원하는 경우에 당신은 명시 적으로 할 수 있습니다에 :

var theme = Request.QueryString["theme"]; 
+0

아니야. 'Request.QueryString = {}'브라우저의 URL 필드에'http : // mysite? theme = yellow'를 입력 한 후 Index action에서 줄 1에 중단 점을 설정할 때 디버거에 넣습니다. – Nilzor

+0

MVC2와 MVC3의 차이점은 무엇입니까? 추신 : 나는 또한 성공없이 당신의 URL 패턴을 시도했다. – Nilzor

+0

그건 이상한데, 난 그냥 코드를 테스트했습니다 그리고 그것은 나를 위해 작동합니다. 그 중단 점에서, Request.RawUrl은 무엇을 말합니까? –

관련 문제