2010-03-30 3 views
7

나는 마스터 페이지와 serach 컨트롤러 및보기에 간단한 검색 양식을 가지고 있습니다. I (예) 문자열 검색 용어 "myterm"에 대한 다음과 같은 경로를 얻으려고 : 루트/검색/mytermSearch Route in ASP.NET MVC

마스터 페이지에서 양식 :

<% using (Html.BeginForm("SearchResults", "Search", FormMethod.Post, new { id = "search_form" })) 
          { %> 
         <input name="searchTerm" type="text" class="textfield" /> 
         <input name="search" type="submit" value="search" class="button" /> 
         <%} %> 

감사관 조치 :

public ActionResult SearchResults(string searchTerm){...} 

라우트 내가 사용하고 있습니다 :

routes.MapRoute(
      "Search", 
      "search/{term}", 
      new { controller = "Search", action = "SearchResults", term = (string)null } 
     ); 

routes.MapRoute(
      "Default", 
      "{controller}/{action}", 
      new { controller = "Home", action = "Index" } 
     ); 

내가 입력 한 검색어와 상관없이 검색어없이 "루트/검색"이라는 URL이 항상 표시됩니다.

감사합니다.

+0

양식이 실제로 잘 게시되고 URL을 직접 검색 할 수 있도록 경로를 추가한다고 가정합니다. –

답변

3

beginform 태그에 id를 사용하고 경로에 {term}을 (를) 사용하고 있습니다.

2 명이 일치해야합니다.

+0

beginform에서 사용하는 id는 양식 식별자 일뿐입니다. 양식의 searchTerm 입력 필드에서 값을 beginform으로 전달하려면 어떻게해야합니까? – vobs

3

올바르게 이해하면 http://www.whatever.com/search/blah으로 갈 수있는 경로를 만들려고하는데 searchTerm 매개 변수가 "blah"인 SearchResults 동작으로 라우팅됩니다.

다음 경로는 처리됩니다 :

routes.MapRoute(
       "Search", 
       "search/{searchTerm}", 
       new { controller = "Search", action = "SearchResults" } 
      ); 

확실히 경로는 기본 경로 전에 또는 기본이 먼저 일치하게 될합니다. 액션의 매개 변수와 일치 시키려면 "용어"가 "searchTerm"으로 변경됩니다. 이것은 필수입니다.