2011-08-01 5 views
14

런타임시 생성되는 부분보기에있는 스크립트를 디버깅 할 수없는 이유는 무엇입니까? 예를 들어 Chrome에서 스크립트 목록의 스크립트를보고 디버그하려면 상위 수준의 '일반'보기로 이동해야합니다. 그렇지 않으면 별도의 .js 파일로 이동해야합니다. 하지만 스크립트가 너무 작아서 어디서나 이동하고 싶지 않고 여전히 디버그 할 수 있기를 원한다면 어떻게해야합니까?부분보기에있는 스크립트 디버그

답변

20

ajax를 통해 부분 뷰를로드하지 않으면 (뷰가 초기 페이지 렌더링에서 제 위치에 있음) '디버거'를 사용할 수 있습니다. 실행할 코드가 dom에 추가되면 IE는 디버그 할 실제 코드가있는 위치를 알 수 없습니다. 따라서 :

// javascript 
var foo = 2; 
debugger; 
// more javascript 
4

일반적으로 부분보기 내부에 스크립트를 포함시키는 것은 좋지 않습니다. 여러 스크립트 참조 및 성능으로 모든 종류의 문제가 발생할 수 있습니다. 더 나은 접근법은 스크립트가 head 태그의 자리 표시 자로 이동하도록하는 것입니다. 이에 대한 몇 가지 예를 들어, 체크 아웃 :

Linking JavaScript Libraries in User Controls

이 부분에서 스크립트를로드 주장하는 경우

Include JavaScript file in partial views

에서, '디버거'접근 방식은 위의 매우 효과적입니다.

10

은 즉시 스크립트 태그를 연 후 구문

//@@ sourceURL=someValue 

를 사용, 지금이 작업을 수행하는 더 나은 방법이있다. 예 :

<script type="text/javascript"> 
    //@@ sourceURL=_fooPartialView.cshtml 
    function foo() {} 
</script> 
소스 매핑에 위에서 변경되었습니다 자바 스크립트 일부 IE 호환성 문제에 분명히 인해

--edit--

:

//# sourceURL=_fooPartialView.cshtml 

또한주의, 이전에 언급되지는 않았지만 "@"는 다른 의미가 있기 때문에 @@은 면도기 뷰의 소스 매핑에만 필요했습니다.