2011-09-07 3 views
0

사용자가 기능 키를 누르면 html 페이지를 열고 싶습니다.masterpage에서 웹 서비스 기능을 호출하는 방법

이제는 기능 키를 캡처해도 문제가 없지만 적절한 페이지를 여는 로직은 마스터 페이지의 코드 숨김에 기록됩니다.

코드에서 함수를 호출하려면 웹 서비스를 만들고 마스터 페이지에서 webservice 메서드를 호출해야한다는 것을 인터넷에서 읽었습니다.

하지만 이것은 작동하지 않습니다. 내가 웹 서비스를 제대로 호출하지 않을 수도 있습니다.

일부 신체를 도울 수 있습니까?

많은 감사

<cc1:ToolkitScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release" EnableHistory="true" EnableSecureHistoryState="false" 
       EnablePageMethods="true" CombineScripts="false"> 
      <Scripts>     
       <asp:ScriptReference Path="~/ShowHelpPage.asmx" /> 

      </Scripts> 

     </cc1:ToolkitScriptManager> 

document.onkeydown = function(event){ 

      if(window.event && window.event.keyCode == 113) 
      { 
       window.open("HelpFile/index.html"); 

      } 
      else if(event.which == 113) 
      { 
       window.open("HelpFile/index.html"); 
       DisplayHelpFile(); 
      } 
     }  

     function DisplayHelpFile() 
     { 
      var i = PageMethods.DisplayHelpPage();// I think this is wrong 
      alert(i); 
     } 

웹 방법

[WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [ToolboxItem(false)] 

    [System.Web.Script.Services.ScriptService] 
    public class ShowHelpPage : System.Web.Services.WebService 
    { 

     [WebMethod] 
     public string DisplayHelpPage() 
     { 
      return "Window.Html";    

     } 
    } 

답변

1

나는에 가정

"나는 뒤에 코드에서 함수를 호출 할 경우 그때는 웹 서비스를 만들고 마스터 페이지에서 웹 서비스 방법 전화를 가지고 인터넷에 읽기" 메서드가 아닌 함수를 참조하는 컨텍스트 페이지로드를 마스터 할 때 메소드를 호출 하시겠습니까? 나는 이것을 위해 웹 서비스를 생성 할 필요가 없다고 생각할 것이다. 클라이언트가 Async를 통해 요청을 시작하고 JavaScript와 AJAX를 사용하여 요청을 보내지 않으려면 않는 한. 무엇을 성취하려고합니까? 그것은 나에게 이것은 자바 스크립트를 통해 얻을 수있는 것 같다. JavaScript를 통해 페이지를 호출하면로드해야합니다.

아래에서 자바 스크립트 만 사용하면됩니다.

 function keyHandler(e) 
    { 
     ... key handling script 
     if(myKey == 'F1') 
     { 
      window.location.href = '...';    
     } 
    } 
    document.onkeypress = keyHandler; 

이 웹 서비스를 호출해야하고 클라이언트에서 시작해야하는 경우 JQuery를 사용하여이 작업을 수행 할 수 있습니다. ShowHelpPage.asmx에서 JavaScript를 통해 처리 및 렌더링 처리를 저장하는 것과 동일한 접근 방식을 사용하십시오. 이것은 내가 아는 한도 내에서 ToolkitScriptManager에 대한 의존성을 제거합니다.

function DisplayHelpFile()   
{ 
    $.ajax({ 
       type: "POST", 
       url: "ShowHelpPage.asmx/DisplayHelpPage", 
       data: "{}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success:function(result) 
       { 
        alert(result); 
       } 
     }, 
     error: ErrorMessage 
     }); 
     function ErrorMessage(result) 
     { 
     alert(result.status + ' ' + result.statusText + ' ' + result.responseText); 
     }  
}  
+1

도움 주셔서 감사합니다. – Vin05

+0

도움이 되니 기쁩니다 !! – Jonathan

0

웹 방법은 정적 할 필요가있다.

관련 문제