2012-09-17 4 views
4

컨트롤러에서 스크립트로 데이터를 전달하는 것은 나쁜 습관입니까?, 즉 : 다음컨트롤러에서 자바 스크립트로 데이터 전달 (보기 무시)

<ul id="..." style="display:none;"> 
@foreach (... in ViewBag.X) { 
    <li id="...">...</li> 
    ... 
} 
</ul> 

그리고 내 스크립트에 내 $.mynamespace.x 배열을 채울 수 선택기를 사용 : 나는 이런 식으로 일을 의미 "보기를 우회"으로

<script> 
    @foreach (... in ViewBag.X) { 
     $.mynamespace.x[i] = ... 
    } 
</script> 

.

답변

4

당신이하고있는 방식은 나쁜 습관입니다. 이제이 정확한 시나리오에 따라 달라집니다 직접 마크 업을 생성에 비해 잘인지

<script type="text/javascript"> 
    $.mynamespace.x = @Html.Raw(Json.Encode(ViewBag.X)); 
</script> 

: JSON은 모든 값이 제대로 클라이언트 측 자바 스크립트로 서버에서 인코딩되는 것을 보장하기 위해 그것을 인코딩하는 올바른 방법입니다. 그러나이 자바 스크립트 배열을 반복하면서 DOM에 HTML을 침투 시키려한다면 솔직히 요점을 제대로 보지 못합니다. 바로이 마크 업을 서버에서 직접 생성하십시오 (두 번째 방법).

최종 설명 약 ViewBag : 사용하지 마십시오. 대신 강력한 형식의보기 모델을 사용하십시오.

+0

글쎄, 내 예제를 너무 리터럴로 해석했다. 그래서 "@ ..."자바 스크립트에 포함 된 사용하여 괜찮아? – sports

관련 문제