성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] VT sequences to "CONOUT$" vs. STD_O...
[정성태] NetCoreDbg is a managed code debugg...
[정성태] Evaluating tail call elimination in...
[정성태] What’s new in System.Text.Json in ....
[정성태] What's new in .NET 9: Cryptography ...
[정성태] 아... 제시해 주신 "https://akrzemi1.wordp...
[정성태] 다시 질문을 정리할 필요가 있을 것 같습니다. 제가 본문에...
[이승준] 완전히 잘못 짚었습니다. 댓글 지우고 싶네요. 검색을 해보...
[정성태] 우선 답글 감사합니다. ^^ 그런데, 사실 저 예제는 (g...
[이승준] 수정이 안되어서... byteArray는 BYTE* 타입입니다...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>ASP.NET AJAX PageMethods - ASPX.cs의 static 메서드를 AJAX로 호출</h1> <p> Ajax 호출이 붐을 일으키면서 WCF + Ajax도 나오고 Web API도 나오고 있는데요. 그보다 더 간단한 방법으로 .aspx 웹 페이지의 .aspx.cs 코드에 정적 메서드를 추가하는 것으로도 Ajax 호출이 가능한 웹 메서드를 만들 수 있습니다.<br /> <br /> 얼마나 간단한지... 어디 한번 직접 만들어 볼까요? ^^<br /> <br /> 여느 때와 다름없이 그냥 ASP.NET 웹 애플리케이션을 하나 만들고 기본 생성된 default.aspx.cs 파일에 다음과 같이 [WebMethod] 특성이 부여된 정적 메서드를 추가합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; <span style='color: blue; font-weight: bold'>using System.Web.Services;</span> namespace WebApplication1 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } <span style='color: blue; font-weight: bold'> [WebMethod] public static Dictionary<string, string> DoMethod(string arg) { var result = new Dictionary<string, string>(); result.Add(arg, Guid.NewGuid().ToString()); return result; }</span> } } </pre> <br /> 이걸로 끝입니다. ^^ 정말 간단합니다.<br /> <br /> 호출은 기본 ajax 호출과 다를 바 없습니다. jQuery를 사용한다면 다음과 같은 코드를 .aspx의 HTML에서 사용하면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <span style='color: blue; font-weight: bold'><script src="~/Scripts/jquery-1.4.1.js" type="text/javascript"></script> </span> <span style='color: blue; font-weight: bold'><script language="javascript" type="text/javascript"> $(document).ready(function () { var getGuid = function () { var inArg = { arg: "GuidValue" } var settings = { type: "POST", url: "/default.aspx/DoMethod", contentType: "application/json; charset=utf-8", data: JSON.stringify(inArg), dataType: "json" }; settings.success = function (result) { $("#output").text(result.d.GuidValue); }; $.ajax(settings); } $("#btnNewGuid").click(function () { getGuid(); }); }); </script></span> <h2> Welcome to ASP.NET! </h2> <p> GUID: <span id="output"></span> <button type="button" id="btnNewGuid">New</button> </p> <p> To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>. </p> <p> You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409" title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>. </p> </asp:Content> </pre> <br /> 정말 간단하죠? ^^ <br /> <br /> 참고로, 예제에서는 Dictionary 타입을 반환하고 있는데 WebMethod 특성이 부여되는 정적 메서드의 시그니처 형식에 제약은 없습니다.<br /> <br /> (<a target='tab' href='http://www.sysnet.pe.kr/bbs/DownloadAttachment.aspx?fid=767&boardid=331301885'>첨부된 파일은 위의 코드를 포함한 간단한 프로젝트</a>입니다.)<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
2082
(왼쪽의 숫자를 입력해야 합니다.)