2011-01-16 4 views
1

에서 사용할 수있는 모델로 모델을 작성하십시오.
3 개의 속성으로 정의 된 모델 클래스가 있는데이 모델을 뷰의 javascript 코드에서 액세스하고 싶습니다. 이 코드는이 작업을 수행하는 더 나은 방법이 있는지 궁금 해서요 2007 년 기사를 기반으로하기 때문에Asp.Net MVC를 사용하여 JavaScript를 처음으로 자바 스크립트

<script> 
var model = <%= Model.ToJson() %> 
alert(model.Prop1); 
</script> 

:

내가 찾은 최고의 그것은 나에게 이런 일을 할 수 있도록 할 this page 했다 .

감사합니다.

+0

내가 의심 줄을하는 경우가 이 접근법에 심각하게 잘못된 것이 있다면 그곳에서 많은 대안을 발견했을 것입니다. 나는 현실이 대부분의 사람들이 전체 모델을 클라이언트 자바 스크립트로 밀어 넣을 필요성을 느끼지 못한다고 생각한다. 솔직히 말해서 내가 원하는 것을 생각할 수 있을지 확신 할 수 없다. 여기서 당신의 조사를 이끌어내는 것은 당신의 목표를 배우는 것이 흥미로울 것입니다. – Lazarus

+0

JSON의 요청에 따라 내 페이지의 데이터가 정기적으로 ajax로 업데이트되지만 JSON을 페이지의 var로 직접 가져 와서 Javascript로 초기 데이터를 렌더링 할 수 있다고 생각했습니다. AJAX 콜백이 페이지를 채우기를 기다린다. – pauloya

답변

2

네, 이렇게하는 것이 좋습니다. JavaScriptSerializer을 사용하여 모델을 JSON 객체로 직렬화하고 적절한 이스케이프 처리를 보장합니다. 대안으로

직접 반환 JSON 컨트롤러 액션을 가질 수 AJAX를 사용하는 경우 :

public ActionResult Foo() 
{ 
    var model = FetchTheModel(); 
    return Json(model, JsonRequestBehavior.AllowGet); 
} 

다음 JQuery와를 사용하여이 작업 소비 :

$.getJSON('<%= Html.Action("Foo") %>', function(result) { 
    alert(result.Prop1); 
}); 
+1

downvote에 대한 이유가 무엇입니까? downvoting 할 때 의견을 남겨주세요. –

+0

내가 downvote,하지만 afaik JavascriptSerializer depriced, 대신 DataContractSerializer 사용해야합니다 ... 나는 C# 전문가가 아니에요 –

+0

@ Martin, JavaScriptSerializer가 사용되지 않습니다. 나는 당신이 이것을 어디에서 읽었는지 모른다. 방금 출시 된 ASP.NET MVC 3 프레임 워크는이를 사용하여 JSON을 생성합니다. 사실 .NET 3.5에서는 일시적으로 사용되지 않으며 .NET 3.5 SP1에서는 다시 사용되지 않았습니다. 사용법은 완벽합니다. –

관련 문제