2010-08-10 4 views
0

환경 : ASP.NET 3.5, MVC 2 웹 응용 프로그램은보기 파일에 Index.aspx는Url.Action을 Jquery/JS로 이동 하시겠습니까? (MVC 웹 응용 프로그램)

나는 다음과 같은있는 jqGrid (코드의 발췌)가 :

$("#list").jqGrid({ 
     url: '<%= Url.Action("GridData") %>', 
     datatype: 'json', 

이입니다 populateGrid라는 인라인 JS 함수에서. 이 함수를 뷰에서 자체 JS로 이동해야합니다. 이 작업을 수행하려면 < % = Url.Action ("GridData") %>를 자바 스크립트의 변수로 저장해야합니다.

:
var griddata = <%= Url.Action("GridData") %>; 

작동 표시되지 않습니다. 어떤 구문을 사용해야하는지 그리고/또는 어떻게 할 수 있는지 궁금합니다. populateGrid 함수는 여러 페이지에서 호출되므로 .js 파일에 넣어야합니다. 일부 따옴표

+0

어디에서 'var griddata = ...'코드를 넣고 있습니까? 다른 함수/클로저 안에 있습니까? $ ("# list")의 컨텍스트는 무엇입니까? jqGrid(); – Jaime

+0

$ (document) .ready (function() {}); – n2009

+0

jqGrid는 JQGrid를 정의하기위한 것입니다. 그래서 처음 몇 개만 붙여 넣기 때문에 많은 특성을 가지고 있습니다. 그것은 또한 $ (document) .ready – n2009

답변

0

던져 :

var griddata = '<%= Url.Action("GridData") %>'; 

이 특정 문제를 해결해야한다.

0

문제는 griddata 변수가 $ (document) .ready 클로저에 국한된다는 것입니다. 당신은 그 범위 밖에서 전역 화하거나 js 범위로 전달할 필요가있다. 당신이 구성 개체를 만들 수 있습니다 ....

var griddata = ... // this outside the function/closure 

$(document).ready(function() {}); 

을 지금 주위에 이런 유형의 데이터를 전달하는 가장 좋은 방법을하지 않을 수 있습니다 모든 설정 변수와 글로벌 네임 스페이스를 오염 : 그래서 그것은 세계 당신이 할 것입니다 만들려면 마스터 페이지에있는 모든 당신 config (설정) (기본값으로 모든) 바르를 유지하기 때문에 정확하게 모든 페이지에 대해 초기화됩니다 ... 뭔가 같은 :

var myAppConfig = { 
    gridData : '<%= Url.Action("xxxx") %>', 
    otherConfig : 'some more configuration here' 
}; 

당신이 당신의 js에서 사용할 수있는 파일

관련 문제