2009-10-26 3 views
0

현재 자바 스크립트 파일을 필요할 때만로드하는 좋은 방법을 찾으려고합니다. 이를 위해 faceboxlinks, datepickerfields, tinymcefields 및 외부 js 및 초기화 jquery 표현식이 필요한 기타 스크립트에 대한 여러 HtmlHelpers를 만들었습니다. 이 헬퍼에서 jQuery의 getScript()을 사용하여 스크립트를 실행하고 콜백 함수를 사용하여 스크립트를 초기화합니다.ViewData를 사용하여 페이지 당로드 된 스크립트를 추적하십시오.

이제 내 문제가 발생합니다. 필자의 초기 생각은 List of Strings에서이 스크립트를 추적하여 htmlHelper.ViewData에 넣는 것입니다. 그러나 불행히도 이것은 실패합니다. 어떤 이유로이 뷰 데이터는 부분 뷰 또는 이와 유사한 것으로 전달되지 않습니다. 목록을 유지하지 않습니다 ..

헬퍼의 ViewDataDictionary 대신 전역으로 내 문자열 목록을 유지할 수있는 또 다른 곳이 있습니까? 아니면 잘못된 방식으로이 ViewData를 사용하고 있습니까? 몇 가지 이유? 설명이나 도움이 매우 감사하겠습니다!

답변

0

HttpContext.Current.Items 컬렉션을 사용하여 현재 요청과 관련된 데이터를 저장할 수 있습니다.

비록 글로벌 변수 (ViewData와 Items가 귀하의 경우에 해당)에 의존하지 않도록 아키텍처를 재 설계해야한다고 생각합니다.

보십시오 : How do I add JavaScript to an ASP.NET MVC View? 및 이와 유사합니다.

+0

감사합니다. HttpContext.Current.Items를 사용하면 트릭을 만들 수 있습니다. 지금은 내 문제를 해결합니다. 이런 상황에서 전역 변수에 의존하는 단점은 무엇일까? 저는 사용하는 모든 뷰에서 스크립트를 정의하고 초기화해야한다는 생각에 열중하지 않습니다. – Leon

+0

전역 변수를 사용하면 아키텍처 제약 조건을 건너 뛰므로 이론적으로 그러한 코드를 지원하는 것이 더 어렵습니다. 한 번에 모든 스크립트를 초기화 할 필요는 없지만 필요에 따라 지금 수행 할 수 있지만 초기화 코드를 컨테이너의 관련 자리 표시 자에 추가 한 다음 마스터 페이지에 추가합니다. 이렇게하면 마스터 페이지가보기에 대해 "알지 않아도"됩니다. –

+0

나는 그것을 지워 줘서 고마워. :) – Leon

관련 문제