2012-12-05 4 views
1

asp.net mvc 3-4.0을 사용하고 있습니다. 질문은 모델 값을 .js 파일로 전달하는 방법입니다. 가끔은 내 면도기 뷰 페이지에 너무 많은 jquery 행을 넣고 싶지 않습니다.asp.net mvc - 서버 매개 변수가있는 js 파일

뭔가

$("#qcontent").load(
        "@Url.Action("QuestionList", "TuongTac")", 
       { 
        id: 1, 
        keywords: @Model.keyword 
        .... 
       } 

은은 .js 파일에서 작동하도록하는 것이 가능합니다 좋아?

감사합니다.

답변

2

가장 확실한 방법은 data-* 속성을 사용하는 것입니다.

당신에 면도기보기 : 외부 자바 스크립트 파일에서 다음

<div id="qcontent" data-url="@Url.Action("QuestionList", "TuongTac")" data-keyword="@Model.keyword"></div> 

:

또 다른 옵션은 외부 파일에 절차 자바 스크립트를 넣어 다음 바로 설정을 덤프하는 것입니다
$("#qcontent").each(function() { 
    var url = $(this).data('url'); 
    var keyword = $(this).data('keyword'); 
    // ... 
}); 

면도기 뷰에서 한 번에 칠해야하는 정보 :

<script type="text/javascript"> 
    var qcontent.settings = @Json.Encode(new { url = Url.Action("QuestionList", "TuongTac"), keyword = @Model.Keyword }); 
</script> 

및 해당 Ja에서 참조하십시오. vaScript 파일 :

$("#qcontent").load(qcontent.settings.url, { id: 1, keyword: qcontent.settings.keyword }); 

이 방법의 단점은 네임 스페이스 지정에주의 할 것 있도록, 글로벌 네임 스페이스를 오염되어 있다는 점이다.

+0

자바 스크립트 데이터에서 마크 업을 분리하고 향후 리팩토링을 단순화하려면 두 번째 옵션 인 – Dima

+0

을 사용하는 것이 좋습니다. 두 번째 방법이 훨씬 복잡해지는 특정 상황이 있습니다 (예 : 더 많이 사용되는 사용자 정의 편집기 또는 디스플레이 템플릿 보기 당 한 번 이상) –

관련 문제