2010-06-15 6 views
2

ASP.Net MVC에서 여행을 시작하기 전에 너무 깊이 파고 들기 전에 뭔가에 대한 쿼리가 있습니다.ASP.Net MVC에서 쿼리 문자열 유지하기

난 페이징 테이블을 가지고 있고, I는 테이블 위에 2 개 제어 가지고 결과의 순서를 정의하며, 이 옆을 정의

  • 텍스트 상자 버튼을 적용

    • 드롭 다운 필터와 는 그 옆에 버튼을 적용

    내가 달성하는 데 필요한 것은 그 사용자가 순서를 변경하거나 내 액션 리터에 AJAX 호출의 필터 I 화재를 추가하는 경우 이케 같은 : /회원/사용자 종류 = & 필터 = & 페이지 = PAGENUMBER?. 그래서 내 컨트롤러 액션은 다음과 같습니다

    • 이 올바른 방법입니다 :
      // GET Membership/Users?sort=&filter=&page= 
          public ActionResult Users(string sort, string filter, string page) 
      

      그래서 내가 3 개 질문이?
    • Jquery/Ajax 함수를 통해 거의 항상 쿼리 문자열이 유지된다는 것을 염두에두고 쿼리 문자열을 유지 관리하는 가장 좋은 방법은 무엇입니까?
    • 인수를 전달하는이 동작에 직접 연결하려면 querystring을 하드 코딩해야합니까?

    감사

  • 답변

    2

    당신은 형식 Membership/Users/{sort}/{filter}/{page}에 새로운 경로를 정의 할 수 있습니다.

    routes.MapRoute(
         "MembershipList",            
         "Membership/Users/{sort}/{filter}/{page}",    
         new { controller = "Membership", action = "Users", sort = "", filter = "", page = "" } 
        ); 
    

    그러나 매개 변수가 선택 사항 인 경우 매개 변수를 그대로두고 그대로두면 좋습니다.

    문자열을 통과 할 때 어떤 이유로 인해 쿼리 문자열이 전달되지 않으면 액션은이 문자열을 처리하고 여전히 뷰를 렌더링해야합니다.

    +0

    David, 좋은 감사입니다. 내 두 번째 질문에 대한 어떤 생각? :-) – Mantorok

    +0

    미안하지만, 나머지는 훑어 보았습니다. 클라이언트 측 호출을 웹 서비스에 제대로 연결하는 것은 불가능하다고 말하고 싶습니다. 데이터를 보유하기 위해 jQuery에서 자신 만의 클래스를 정의 할 수는 있지만,이 액션을 사용하여 그만한 가치가있게 만들 필요가 있다고 말하고 싶다. 기본적으로 URL을 하드 코딩하려면 쿼리 문자열을 사용하거나 MVC 라우팅 엔진이 인식 할 수있는 형식으로 URL을 하드 코딩해야합니다. 항상 매개 변수를 전달하고 애플리케이션에서 경로를 두 번 이상 사용하는 경우 나는 그 길을 사용할 것을 제안 할 것이다. –

    관련 문제