2010-01-08 5 views
0

[질문 :asp.net 패스 데이터베이스에서 자바 스크립트 코드

실행할 수있는 나는 (데이터베이스에서) 페이지에 자바 스크립트 함수를 전달할 수있는 방법이 있나요?

나는 메타 데이터 구동 asp.net MVC 웹 사이트를 개발

배경 정보는 (기본적으로 제가 DB에 데이터를 변경하고 페이지는 즉시 생성된다).

불행하게도 나는,

나는 사용자 정의 페이지를함으로써이 문제를 해결할 수 (당신은 옵션 1을 선택하는 경우 즉, 다음 항목 X를 숨기기) 일부 라우팅 요구 사항이 한 페이지를 가지고 있지만 내가 올 수 있다면 좋을 것이다 더 강력한 솔루션을 제공합니다.

그래서 내가 생각하고있는 것은 onchange 이벤트 처리기 (메타 데이터 값을 기반으로)를 첨부 할 수 있으며 그런 다음 그 onchange 이벤트를 기반으로 실행되는 코드가 있습니다.

답변

1

서버 측 코드에서 정적 javascript를 렌더링하도록 설정할 수 있지만 요구 사항의 변경으로 인해 클라이언트에서 javascript를 변경할 수 없습니다. 당신은해야 할 수도있는 모든 상호 작용을 처리 할만큼 충분히 동적 인 JS 코드를 렌더링해야합니다. 서버 측 코드는 외부 자원 (예 : 데이터베이스)뿐만 아니라 모든 코드를 의미합니다. 하지만 DB에 정적 JS 코드를 저장하는 것이 JS를 파일에 저장하고 JS 구성 요소가 해당 파일 내에서 서로 다른 상호 작용을하기에 충분히 똑똑한 것보다 더 많은 것을 구입하는 것이 확실하지 않은 경우 ...

그래서 서버 측 저장소에서 정적 JavaScript를 렌더링 할 수 있지만 JS 코드가 서버 측에서 웹 서비스를 호출하지 않는 한 JS는 서버 측 코드에서 동적으로 변경할 수 없습니다.

의미가 있습니까?

+0

가 그래, 난 그렇게 생각 :

var h = document.getElementsByTagName("head")[0]; var js = document.createElement("script"); js.type = "text/javascript"; js.src = "scriptfilegenerator.ashx"; h.appendChild(js); 

그리고 서버 (ASHX 파일)에

이 코드를했을 : 클라이언트에

, 당신이 자바 스크립트있을 것입니다. 나는 데이터베이스에있는 JS에 당신의 요점을 가져 간다. 만약 JS 컴퍼넌트가 서로 다른 상호 작용을 처리 할 수있을만큼 똑똑하다면 (하지만이 경우에는 기본적으로 규칙 엔진을 구축하는 것이 가장 좋은 옵션이지만 프로젝트의 범위를 벗어납니다.) 어떻게 할 수 있습니까? 정적 자바 스크립트 서버 측을 렌더링합니까? 페이지가 읽는 즉시 .js 파일을 생성합니까? –

+0

MVC, 맞습니까? 문자열 js = ""; <%= js %> MVC에서이 접근법에서는 컨트롤러에서 모델로 JS를 밀어 올릴 수 있습니다 (웹 양식은 다르며 Page.ClientScript를 사용하여 이러한 요구 사항을 관리합니다).그리고 그런 식으로 콘텐츠를 작성하십시오. 나는 그것에 대해 생각하고 있었고 당신의 요점을 보았습니다. 시스템의 역동 성을 구축하고 있다면 상호 작용이 많고 JS 파일을 부 풀리지 않으려면 DB에 저장하는 것이 좋습니다. –

1

실제로 가장 안전한 것은 아니지만 JavaScript's eval() function을 사용하면 원하는대로 전달하고 실행할 수 있습니다.

또 다른 아이디어는 서버에서 자바 스크립트 파일을 생성하는 것입니다 (데이터베이스에서 가져 오든 다른 방법으로 가져 오기하든). 페이지에서 처리기 (ashx 파일)를 호출하는 스크립트 태그를 추가하여 자바 스크립트 파일.

context.Response.AddHeader("content-disposition", "inline; filename=scriptfile.js"); 
context.Response.ContentType = "text/javascript"; 

context.Response.Write("your script here");