2011-01-31 5 views
1

컨트롤러 동작에서 HTML을 생성하고이 HTML을 내보기 (jquery 사용)에서 AJAX 호출에 다시 제공 할 수 있는지 여부를 결정하는 데 문제가 있습니다.컨트롤러 동작의 HTML 렌더링

예를 들어, jQuery Autocomplete를 통해 클라이언트를 선택할 때 선택된 클라이언트 ID를 얻는 것 외에도 디스플레이를 구성하거나 양식을 편집해야합니다. 우리는 수도 :

  1. 이 자리 수십 같이 적절한 ID로 div들하고 우리의 개체에서 내용과 그 div의 업데이트 다음에 IF를의 (매우 오류가 발생하기 쉬운, 많은을 컨트롤러 액션에서 Client JSON 객체를 받아 우리 JS 코드 등),
  2. Client JSON 객체를 요청하는 대신 준비된 HTML을 요청하고보기에 삽입하면됩니다 (더 매력적인 솔루션, 논리가 컨트롤러로 이동되어 유지 관리가 용이함 - C# JS보다 코드).

이것이 유효한 옵션이라고 생각하십니까? 가장 현대적인 응용 프로그램은 무엇을합니까?

  1. 2는 클라이언트의 표시 양식에 완벽하게 작동하지만 2.에서 편집 할 수 있습니까?. Eedit 양식은 HTML input 컨트롤을 포함해야합니다. 클라이언트 속성을 컨트롤러에 다시 게시 할 때 클라이언트 모델 속성을 사용하여 뷰 모델을 구체화 할 수 있기 때문에 클라이언트 속성을 다시 게시해야하기 때문입니다.
+0

여기 컨트롤러의 동작 (가끔) http : // mrgsp에서 HTML을 렌더링하는 앱이 있습니다.md : 8080/awesome/person – Omu

답변

0

귀하의 컨트롤러패스 데이터가보기에, 을 html로해서는 안된다.

저는 개인적으로 PartialViews와 jQuery Load() functionality을 사용하여 제공된 데이터를 기반으로 부분 뷰를로드합니다.

+0

분명히 그 질문을 놓쳤습니다. 컨트롤러 동작과 Load()를 통한 렌더링 모두를 다루기 때문에 불행합니다. 그 점을 지적 해 주셔서 감사합니다. – mare

2

컨트롤러는 입니다.

솔루션은 다음과 같습니다이

  • jQuery를/자바 스크립트를 사용하여 클라이언트 측에서 태그를 JSON을 다시 전송 및 구성 달성하기 위해

    • 특정보기를 사용 (이 부분 일)
    • 사용자 정의 HTML 만들기 도우미은 필요한 태그와 스크립트를 내뱉습니다.

    나는 개인적으로 3 선택할 것 다음 2

  • +0

    사용자 정의 HTML 도우미는 MVC에서 꽤 정적입니다. JS 코드 내에서는 사용하지 마십시오. 페이지와의 사용자 상호 작용을 기반으로 도우미를 호출 할 수 없습니다. 컨트롤러 액션 (JSON을 반환하거나 HTML 문자열을 반환하는 액션) 만 호출 할 수 있습니다. 그건 당신의 선택 2이고 그것은 지금 내가하는 일입니다. – mare

    +1

    HTML 헬퍼를 사용하여 ** 정적 js 파일에있는 함수를 호출하는 작은 자바 스크립트를 뱉어 ** 이벤트와 동작을 연결합니다. 아마도 당신이 그것을 사용할 때입니다! – Aliostad

    +0

    그러면이 세 번째 옵션에 초점을 맞추고 일부 코드로 답변을 업데이트 하시겠습니까? – mare

    0

    당신은 단지 이것에 대한 아약스 양식을 사용할 수 있습니까?

    1 : JQuery와 통해 양식을 제출합니다.

    2 : 매개 변수로 전달하는 부분을 기반으로 부분보기를 찾아 반환하십시오.

    3 : 관련 div를 업데이트하십시오.

    +0

    아약스 또는 일반 POST로 양식을 제출해야하는 이유를 완전히 이해하지 못합니다. 자동 완성 텍스트 상자 선택에 따라 HTML을 준비해야합니다. – mare

    +0

    그런 다음 컨트롤러에서 JSON 대신 부분 뷰를 반환하십시오. 중요한 것은 HTML을 컨트롤러 밖으로 유지하는 것입니다. –