2009-06-10 2 views
1

기본적으로 페이징으로 검색 페이지를 만들고 싶다면 다음과 같은 url이 필요합니다.ASP.Net MVC : 경로 및 뷰 메서드를 통해 변수 요청

/Topics/Index?search=hi&page=1 

알아낼 수없는 것은 다음과 같은 방법입니다.

A) 기본 경로 설정 검색 및 페이지 1 /주제/색인? 페이지 = 1 또는 심지어/주제/색인? 검색 = & 페이지 = 1

B) 같은

컨트롤에 대한 메서드가있는 경우 :

Index(String search, Int32? page) 

그리고 URL을 사용하십시오.

/Topics/Index?search=hi&page=1 or /Topics/Index?search=hi 

이 메서드에서 원하는 것을 제공합니다. 난 그냥 요청 변수와 함께 기본 URL을 만드는 주제 컨트롤러에 대한 기본 경로를 얻을 수있는 방법이 필요합니다. 난 그저

/주제/색인/안녕하세요/1

검색 URL에 도움이된다고 생각하지 않는다. :

/주제/색인/1

답변

0

그래서 기본적으로 나는 컨트롤러의 기본값을 설정하여 비 값을 처리하는 것에 의지했다. 이것은 최선의 생각인지는 모르겠다. Global.asax에에서

:

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

컨트롤러 :

public ActionResult Index(Int32? parentForumId, Int32? pageNumber, Int32? amountToShow) 
{ 

    Int32 revisedPageNumber = pageNumber.HasValue ? pageNumber.Value : 0; 
    Int32 revisedAmountToShow = amountToShow.HasValue ? amountToShow.Value : 10; 
    Int32 revisedParentForumId = parentForumId.HasValue ? parentForumId.Value : 1; 

    IList<TopicCreateViewModel> modelValues = 
    Topic.GetListForGrid(revisedParentForumId, revisedPageNumber, 
     revisedAmountToShow, out realPage) 


    return View("Index", modelValues); 
} 
1

아무것도는 쿼리 문자열 매개 변수로 추가 얻을 것이다. 그래서 당신은 할 수있다 :

Url.GenerateUrl("Route", "Index", "Topics", 
    new RouteValueDictionary(new 
    { 
     page = this.Model.PageNumber, 
     search = this.Model.Search 
    }); 
+0

은 그래서 링크 또는 "리디렉션"하지만 페이지에 대한 경로 기본 설정에 대한 말에 좋은? 그게 똑같이 작동하지 않는다면? –