2011-03-20 4 views
2

타사 응용 프로그램에서 참조 할 클래스 라이브러리 DLL을 만들었으며 로컬 파일을 읽도록 JavaScript를 호출하고 파일에서 일부 값을 참조하는 응용 프로그램으로 반환하는 함수가 하나만 포함되어 있습니다 . System.Web.HttpContext.Current.Response.Write
을하지만 실행되지 않을 수 있습니다 그것을 참조하는 페이지의 시작 부분에 자바 스크립트 함수를 쓴다 :클래스 라이브러리에서 Javascript 호출

  1. 내가 사용.

  2. 그럼, 내가 사용하는 참조 페이지의 끝에서 자바 스크립트를 작성하는 : Dim CSM As UI.ClientScriptManager = System.Web.UI.Page.ClientScript
    와 나는 또한 사용 :

    Me.Page.ClientScript CSM.RegisterClientScriptBlock(Me.GetType(), "SCRIPTNAME", JavaScriptSuntax.ToString)

    을 그리고 오류 메시지를 보여줍니다 참조 비에 공유 된 회원은 공유 된 참조가 필요합니다.

  3. 시도 : ScriptManager.RegisterStartupScript("", Me.GetType(), "SCRIPTNAME", JavaScriptSuntax.ToString)
    하지만 오류 메시지가 나타납니다. 이름 "ScriptManager"가 선언되지 않았습니다.

    System.Web, System.Web.UI, System.Web.UI.ClientScriptManager, System.Web.UI.Page, System.Text

    :

나는 다음에 참조를 추가

JavaScript를 클래스 라이브러리 DLL에서 호출하여 참조하는 asp.net 응용 프로그램에서 올바르게 수행 할 수있는 방법은 무엇입니까 ??

미리 도움을 주셔서 감사합니다.

코드 샘플 :

** Correction now it writes the JavaScript in the body tag but for some reason it doesn't work!!! 

'Function in Class Library DLL 
Function ReadClientFile() As Boolean 
Try 
Dim JavaScriptSuntax As StringBuilder = New StringBuilder() 
JavaScriptSuntax.Append(" var FSO = new ActiveXObject('Scripting.FileSystemObject');") 
JavaScriptSuntax.Append(" var nForReading=1;") 
JavaScriptSuntax.Append(" var fileLines;") 
JavaScriptSuntax.Append(" var OldKeyLine;") 
JavaScriptSuntax.Append(" var NewKeyLine;") 
JavaScriptSuntax.Append(" var oFileObj = FSO.OpenTextFile('D:\TestJScript.txt',nForReading, false);") 
JavaScriptSuntax.Append(" var sFileContents=oFileObj.ReadAll();") 
JavaScriptSuntax.Append(" fileLines = sFileContents.split('\n');") 
JavaScriptSuntax.Append(" for(var intMissed = 0; intMissed < fileLines.length; intMissed++)") 
JavaScriptSuntax.Append(" {") 
JavaScriptSuntax.Append(" var myRegExp = /Doc_|_New/;") 
JavaScriptSuntax.Append(" var string1 = fileLines[intMissed];") 
JavaScriptSuntax.Append(" var matchPos1 = string1.search(myRegExp);") 
JavaScriptSuntax.Append(" if(matchPos1 != -1)") 
JavaScriptSuntax.Append(" {") 
JavaScriptSuntax.Append(" NewKeyLine = sFileContents.split(' = ');") 
JavaScriptSuntax.Append(" if(NewKeyLine[1].trim == '')") 
JavaScriptSuntax.Append(" {") 
JavaScriptSuntax.Append(" alert('Doc Key has not been updated!');") 
JavaScriptSuntax.Append(" }") 
JavaScriptSuntax.Append(" Else") 
JavaScriptSuntax.Append(" {") 
JavaScriptSuntax.Append(" alert('Doc Key has been updated and the NewKey= ' + NewKeyLine[1]);") 
JavaScriptSuntax.Append(" }") 
JavaScriptSuntax.Append("}") 
JavaScriptSuntax.Append(" else") 
JavaScriptSuntax.Append(" {") 
JavaScriptSuntax.Append(" }") 
JavaScriptSuntax.Append(" }") 
JavaScriptSuntax.Append(" oFileObj.Close();") 

Dim page As Page = HttpContext.Current.Handler 
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "SCRIPTNAME", JavaScriptSuntax.ToString, True) 
Return True 
Catch ex As Exception 
    gstrErrorMsg = ex.Message 
    Return False 
End Try 
End Function 


' Button Click Function in referencing ASP.NET Page 
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
     Dim IsDone As Boolean = DispCaller. ReadClientFile() 
End Sub 

답변

1

이 같은 HttpContext 내에서 페이지 인스턴스를 얻을 수 있습니다 :이

Page page = (Page)(HttpContext.Current.Handler); 
page.ClientScript.RegisterClientScriptBlock(...); 

C#을하지만,뿐만 아니라 VB.NET로 쉽게 변환 할 수 있어야합니다.

편집 :

Dim page As Page = HttpContext.Current.Handler 
page.ClientScript.RegisterClientScriptBlock(...) 
+0

고마워 그림자 마법사,이게 내가 뭘 찾고 있었는지, 그리고 이것이 VB.NET에서 누구에게나 필요로하는 방법이다. Dim page as Page = HttpContext.Current.Handler page.ClientScript.RegisterClientScriptBlock) – DesignStudio

+0

환호 @Des 다행스럽게 도울 수있었습니다! :-) –

+0

하이 섀도우 위저드 (Hi Shadow Wizard), 에러 메시지는 사라졌지 만, 자바 스크립트 STILL은 참조 된 페이지의 맨 위에 쓰여져 있습니다. 거기에 머리 태그 또는 페이지의 본문 태그 안에 쓸 수있는 방법이 있습니까 ?? – DesignStudio

1

당신은 당신의 클래스 라이브러리에 System.Web.Extensions & System.Web.UI class의 참조를 추가하고 스크립트 관리자에서 작업의 권한을 얻을 수 있습니다 : 여기 VB 구문입니다. RegisterClientStartUp 함수도 업데이트 패널에서 호출 할 수 있습니다.

관련 문제