2014-10-15 2 views
1

많은 로트 메서드가있는 사용자 정의 컨트롤이 있습니다. 메소드를 클라이언트에 공개하려고합니다. 그래서 내가 자바 스크립트에서 컨트롤의 메서드를 호출하고 결과를 얻을 수 있습니다.ASP.NET 사용자 정의 컨트롤에서 클라이언트 측에 메서드를 노출하려고합니다.

예 : GetData()라는 서버에서 데이터를 가져 오는 메서드입니다. 현재이 메서드는 코드 뒤에 대해서만 호출합니다. 그것은 데이터를 반환합니다. 이제 클라이언트 쪽에서 같은 메서드를 호출하고 싶습니다.

가능합니까?

+0

어떤 종류의 웹 서비스에서이 메서드를 래핑해야합니다. 그러나 그것을 자신의 클래스로 옮겨야하고, 사용자 컨트롤과 웹 서비스에서 새로운 클래스의 메서드를 호출해야합니다. –

+0

아키텍처를 다시 생각해 볼 수 있습니다. 사용자 컨트롤이 데이터를 클라이언트에 노출시키는 이유는 무엇입니까? 이로 인해 명확한 Separation of Concerns가없는 나쁜 설계가 될 가능성이 있습니다. 대신 Microsoft의 [Web API] (http://www.asp.net/web-api)를 기반으로 API를 작성하고이를 통해 데이터를 노출해야합니다. – mason

답변

-1

당신은 webMethods의를 사용해야합니다 : 당신은 당신의 기술을 달라집니다 방법의 몇 가지를 가지고 http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

+0

http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers –

+0

WebMethods는 Microsoft에서 더 이상 지원하지 않습니다. [Web API] (http://www.asp.net/web-api)는 귀하가 사용해야하는 (그리고 추천하는) 것입니다. – mason

+0

WebMethods는 정적이어야합니다. 정적 인 것 이외에 WebMethod (정적) 메소드의 어떤 것도 액세스 할 수 없습니다. 그래서 어떻게 내가 WebMethod 안에 사용자 정의 컨트롤의 인스턴스 메서드를 호출 할 수 있습니다. –

0

:

은 보라. 프로젝트가 사용하는 경우 :

  • 웹 양식 :

예 : 프런트 엔드 것

<div> 
    <span><%= GetData(Eval("Data Column").ToString()) %></span> 
</div> 

, 당신은 당신의 방법을 노출하는 방법을 알 수 있습니다.

protected string GetData(string content) 
{ 
    // Do Something. 
} 

이는 귀하의 방법 인 코드입니다. protected 또는 public이어야하며 private 일 수 없습니다.

  • 웹 방법 :이 가능한이지만, 위에서 언급 한 바와 같이 더 이상 지원되지 않습니다. 그래서 그들은 존재하지만 예제를 제공하지 않을 것입니다.
  • 모델 뷰 컨트롤러 :

예 :

당신이 뒤에서 방법을 노출 면도기를 사용주의로, 프론트 엔드입니다
<div> 
    <span>@{ ClassName.GetData() }</span> 
</div> 

. 그러면 Controller에서 메서드를 호출하는 데 도움이됩니다.

두 가지 접근 방법이 있습니다. 올바른 방향으로 안내 할 것입니다.

관련 문제