문제

필터 검색 결과에 대한 링크를 제공하려고합니다.

    <%= Html.ActionLink("Filter Results", "Index", new { page = Model.RestaurantList.PageIndex(), searchText = Model.SearchText, useFilter = true, filterOption = Model.FilterOption, filterText = Model.FilterText }, null)%>

컨트롤러 정의는 그와 같습니다

 public ActionResult Index(int? page, string searchText, bool useFilter, string filterText, string filterOption)

그러나 이것을 디버깅 할 때 값은 제대로 설정되지 않고 사용 필터 변수조차도 설정되지 않습니다.

내 링크가 LocalHost/Home/Index/True로 렌더링됩니다. Page = 0

이것을 고치는 방법이 있습니까?

도움이 되었습니까?

해결책

코드 세그먼트는 괜찮아 보입니다. 2 가지 가능한 오류가 있다고 생각합니다.

  1. 잘못된 경로 정보 : routes.maproute (...) 호출을 global.ascx.cs/vb 파일에서 호출하여 홈#인덱스 조치를 올바르게 구성하는지 확인하십시오.
  2. 잘못된 컨트롤러 : 컨트롤러를 명시 적으로 지정하는 ActionLink의 오버로드를 사용해보십시오.

여전히 작동하지 않으면 더 많은 정보를 게시 할 수 있습니다 (경로 매핑 코드,보기/컨트롤러 이름).

다른 팁

작동 해야하는 것 같습니다.

ActionLink에 전달하는 모델 필드에 실제로 데이터가 포함되어 있는지 확인 했습니까?

그러나 이것을 디버깅 할 때 값은 제대로 설정되지 않고 사용 필터 변수조차도 설정되지 않습니다. 내 링크가 LocalHost/Home/Index/True로 렌더링됩니다. Page = 0

사용 필터 매개 변수가 실제로 렌더링된다고 생각합니다. 내가 추측하는 경로에 매핑되었습니다.

SearchText에 대한 하드 코드 값을 설정하십시오

표시되면 컨트롤러에 모델을 설정하지 않았습니다.

나는 비슷한 상황을 가졌다.

이 같은:

Html.ActionLink("Click me", "Index", "Student", 
        { ID = theclass.StudentID }, null) 

항상 렌더링됩니다

localhost/myapp/Student/Index/1234

내가 실험하는 동안 나는 그것을 알아 차렸다 Index 매개 변수 이름을 변경하면 부품이 URL에서 사라졌습니다. ID 같은 것입니다 IDX

localhost/myapp/Student/?IDX=1234

매개 변수 이름이 밝혀졌습니다 ID Global.asax.cs의 기본 경로 항목으로 인해 특별합니다 (편안한 비즈니스 객체 액세스 패턴을 설정)

이 문제를 해결하기 위해 나는 단순히 사용을 중단했습니다 Index ID를 취하고 대신 다음과 같은 다른 방법을 정의하려면 다음과 같습니다.

public ActionResult Detail(int ID)

결국, 편안한 디자인 원칙에 따라 Index 단일 비즈니스 객체가 아닌 "비즈니스 객체 목록"또는 일종의 비즈니스 객체 모음을 보여주기위한 것입니다. 비즈니스 객체 ID를 전달합니다 Index 패턴을 위반하는 것입니다.

팔을 비틀고 어색한 디자인을 강요하는 대신 자연스럽게 바뀌 었습니다.

나는 디자인을위한 모범 사례를 믿는다 Index 진입 점은 파라미터가없는 상태로 유지하거나 여과/분류 매개 변수 만 통과하는 것입니다.

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