2010-02-08 3 views
0

나는 asp.net mvc보기 페이지 위쪽이 테이블 인 있습니다. 내가 원하는 것은 테이블에있는 행을 클릭하여 서버로 이동하여 해당 테이블에 대한 세부 정보를 얻는 것입니다. 이것은 잘 작동하고 있으며 Json에서 세부 정보를 반환하고 있습니다.jquery json 호출 결과에 partialview를 표시하는 가장 좋은 방법은 무엇입니까

문제는 아래 세부 정보 패널을 표시하고 싶습니다. 지금은 세부 정보 창이 모두 부분보기에서 완료했습니다.

jquery를 사용하여 "연결하는 방법"이 어떻게 될까요? 행을 클릭하면 세부 정보 창에 정확한 모델 데이터가 표시됩니다.

  1. json을 도려 ​​내 컨트롤러 동작에서 html을 생성하고 html로 돌아가서 세부 정보 창을 표시합니까?
  2. 기타 모범 사례 또는 제안 사항은 여기에 있습니까?

답변

2

JSon 결과를 얻기 위해 MVC Ajax 도우미를 사용하여 컨트롤러를 호출한다고 가정합니다.

대신 JQuery를 사용하여 JSon 컨트롤러를 호출 할 수도 있습니다. 그래서 링크 나 버튼을 클릭하면 숨겨진 태그에서 컨트롤러로 전달해야하는 ID를 찾는 자바 스크립트를 호출 할 수 있습니다. JSon 결과를 받으면 html 태그의 속성을 설정하고 세부 정보 창을 표시하거나 숨 깁니다. 이런 식으로 뭔가 :

function ShowPartial() { 
    var ID = $("#hiddenValue").attr("value"); 
    $.getJSON("YourUrl" + ID, function(result) { 
     $.each(result, function(item) { 
      // Set you html properties using this["JSonPropertyName"] 
     }); 
    }); 
} 

대안은 단순히 MVC 아약스 헬퍼를 사용하고 일부 세부 사항보기로 div 태그를 업데이트하고 JSON을 사용하지 않는 것입니다.

+0

jquery $ .getJson을 사용하여 제어 도구를 호출하고 json – leora

+0

을 반환합니다.이 방법을 사용하면 javascript를 사용하여 html을 직접 생성해야합니다. 그리고 당신은 페이지를로드 할 때 거기에 있지 않아야 html로 믹스해야합니다. 내 의견으로는, 나쁜 습관과 나는 아마도 컨트롤러 동작에서 html로 돌아 오는 것이 더 나은 접근 방법이라고 생각할 것이다. –

+0

당신은 이미 생성 된 모든 HTML을 가질 수 있고 json이 반환 될 때 값을 설정하고 숨기기를 취소 할 수 있습니다. 그러나 이것은 최선의 해결책이 아니며 컨트롤러에서 HTML을 반환하는 것이 최선의 방법이라고 동의합니다. – lancscoder

0

jtemplates (jquery plugin)과 같은 클라이언트 측 템플릿 엔진을 사용하면이 클라이언트 측을 처리 할 수 ​​있습니다. 컨트롤러 동작에서 부분 뷰를 반환하고 페이지에서 원하는 위치에 html을 렌더링 할 수 있습니다. 하지만 아약스 요청에서 html을 반환하는 것은 나쁜 습관이라고 생각하며 json 객체를 반환하는 편이 낫습니다.

+0

정확히 내 dillema입니다. html을보기에 반환하는 것이 더 쉬워 보이지만 걱정의 분리를 깨뜨리는 것처럼 보입니다. . – leora

+0

그런 다음 jtemplates (내가 언급 한 링크)를 시도하십시오. 이를 통해 json 객체를 미리 정의 된 템플릿에 "바인딩"할 수 있습니다. 당신이 이것을 좋아하지 않거나 jquery를 사용하지 않는다면 다른 엔진도 있습니다. –

관련 문제