2012-12-06 3 views
0

MVC 애플리케이션이 있고 컨트롤러의 HTML 테이블을 json을 사용하는 뷰로 전달하고 싶습니다.MVC에 HTML 테이블 전달 컨트롤러에서보기

는이 사이트에이 Q &을 발견 하지만 PHP를 위해 그리고 나는 C#을 사용하고 있습니다 json_encode을 권장 Sending HTML Code Through JSON ...

가 어떻게 JSON을 사용하여 HTML 표를 전달할 수 있습니다?

현재 나는 시도했다 : 내보기에서

return Json(MyHTMLTable); 

: 원형을 :

<script type="text/javascript"> 
$(document).ready(function() { 
    $.ajax({ 
     url: '@Url.Action("GetTable","MyPages")', 
     type: 'POST', 
     success: function (result) { $('#ph').html(result.responseText); }, 
     error: function (result) { 
      $('#err').html(result.responseText); 
     } 
    }) 
}); 

(pH가 사업부는)

나는 다음과 같은 오류가 발생했습니다 개체를 serialize하는 동안 참조가 검색되었습니다. 'System.Web.UI.WebControls.TableRow'형식의.

답변

1
ActionResult() PartialView()을 반환에 @URL.Action

$.ajax({ 
    url: 'MyPages/GetTable', 
    type: 'POST', 
    success: function (result) { $('#ph').html(result.responseText); }, 
    error: function (result) { 
     $('#err').html(result.responseText); 
    } 
}) 

를 제거하기 위해 아약스를 변경

? 이 예에서 TableHtml라는 이름의 당신의 부분보기에서

는 당신이 JSON

public ActionResult GetTable(){ 

    // do something 
    String myHtml = "<div></div>; 

    return Json(myHtml, JsonRequestBehaviour.AllowGet); 
} 
에 래핑 할 수 당신이 HTML을 반환해야하는 경우

public ActionResult GetTable(){ 

    // do something 

    return PartialView("TableHtml"); 


} 

아약스 그러나이

을 받아 들일 것이다 HTML됩니다

+0

그것은 부분도 아니다. 동적으로 HTML 테이블을 생성하므로 뷰가 어떻게 보이는지 알 수는 없습니다 ... –

1

우선 JSON을 사용하여 컨트롤러에서 HTML 테이블을 뷰로 전달할 필요가 없습니다. JSON은 대개 웹 서비스와 클라이언트 사이에서 문자열 화 된 데이터를 전송하는 방법을 의미합니다. 그것은 SOAP에서 함수와 유사합니다. 모델에서 전달하는 강력한 타이핑을 잃어 버리기 때문에 컨트롤러에서 뷰로 데이터를 전송하는 것은 좋지 않습니다.

그래서, HTML 테이블을 뷰 모델의 변수로 전달하면됩니다. ViewBag를 사용할 수도 있지만 이렇게하면 강력한 입력을 잃게됩니다. 어느 쪽이든 테이블이 C#에서 생성되었다고 가정하면 HTML이 들어있는 문자열을 MvcHtmlString으로 변환하기 만하면됩니다. 당신은 이것을 좋아한다 :

var table = MvcHtmlString.Create("<table>..."); 

그리고 이것을 모델이나 ViewBag에 포함 시켜라. 그런 다음 뷰 페이지의 페이지 테이블을 인쇄 클래식 면도기 구문을 사용할 수 있습니다 :

@Model.Table 

또는

@ViewBag.table 
+0

고마워요! 정말 도움이되었습니다. –

+0

질문에 답변하셨습니까? :) –

관련 문제