Javascript 직접 호출 서버 C\#코드 ASP.NET Ajax 인 스 턴 스

5206 단어 ASP.NETAjax
MS Ajax 에서 JS 와 C\#의 상호작용 방식 중 하 나 는 웹 서 비 스 를 호출 하 는 것 이다.이 웹 서 비 스 는 ASMX 도 가능 하고 WCF 도 가능 하 며 어떤 방식 이 든 시스템 은 개발 자 에 게 에이전트 의 JS 류 를 자동 으로 생 성 한다.실현 방법 은 다음 과 같다.
1.        웹 사 이 트 를 만 들 고 WCF 서 비 스 를 추가 합 니 다(여 기 는 Ajax-Enabled WCF Service 를 선택해 야 합 니 다).다음 그림 과 같 습 니 다.

2.        IDE 는 자동 으로 SVC 파일 을 생 성 합 니 다.대외 인터페이스 이 고 SVC 에 대응 하 는 배경 구현 클래스 입 니 다.이 파일 은 App 에 놓 입 니 다.코드 아래,아래 그림 과 같이:
height=99
3.이러한 종류의 코드 를 수정 합 니 다.다음 과 같 습 니 다.
 
[ServiceContract(Namespace = "TestAjax")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service
{
[OperationContract]
public bool ValidateUser(string uid, string pwd)
{
if (uid=="sa"&&pwd=="sa")
{
return true;
}
return false;
}
}
4.이제 우 리 는 페이지 에서 호출 할 수 있 습 니 다.먼저 페이지 에 ScriptManager 를 추가 하고 우리 가 방금 작성 한 WCF WebService(실행 할 때 JS 의 프 록 시 클래스 를 생 성 하 는 것 이 목적 입 니 다)를 도입 합 니 다.다음 과 같 습 니 다.
 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Service.svc"/>
</Services>
</asp:ScriptManager>
</div>
</form>
</body>
</html>
5.다음은 JS 코드 를 작성 하여 C\#로 작 성 된 WebService 를 직접 호출 할 수 있 습 니 다.JS 코드 는 다음 과 같 습 니 다.
 
<script type="text/javascript">
function ValidateUser(uid, pwd) {
TestAjax.Service.ValidateUser(uid,pwd,OnSucceed ,OnFailed );
}
function OnSucceed(result) {
if (result == true) {
window.alert(" ");
}
else {
window.alert(" !");
}
}
function OnFailed(result) {
window.alert(" :"+result ._message);
}
</script>
6.여기 서 TestAjax.Service.ValidateUser 방법 을 호출 할 때 코드 에서 이 함수 의 반환 값 을 직접 찾 지 않 았 습 니 다.이러한 방안 을 이용 하여 서버 함수 에 대한 호출 은 모두 비동기 적 이 고 정확 한 처리 방법 은 두 개의 리 셋 함수 OnSucceed 와 OnFailed 를 지정 하 였 습 니 다.첫 번 째 함 수 는 성공 시의 리 셋 입 니 다.다음 하 나 는 실패 할 때의 리 셋 입 니 다.이 두 함 수 는 모두 하나의 매개 변수 가 필요 합 니 다.OnSucceed 의 매개 변 수 는 서버 함수 의 리 턴 값 입 니 다.OnFailed 의 매개 변 수 는 실패 할 때의 오류 정보 입 니 다.기능 은 Exception 형식 과 같 습 니 다.그 중에서message 속성 중 오류 메시지,stackTrace 에서 오류 가 발생 한 스 택 추적 정보 입 니 다.7.이런 반전 방법 은 절대 귀 찮 게 하지 마 세 요!사실 이것 은 일반적인 비동기 반전 모델 로 대부분 상황(어떤 언어 든)은 이렇게 쓸 것 이다!8.페이지 의 전체 코드 는 다음 과 같다.
 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function ValidateUser(uid, pwd) {
TestAjax.Service.ValidateUser(uid,pwd,OnSucceed ,OnFailed );
}
function OnSucceed(result) {
if (result == true) {
window.alert(" ");
}
else {
window.alert(" !");
}
}
function OnFailed(result) {
window.alert(" :"+result ._message);
}
function Button1_onclick() {
var uid = $get("tbxUid").value;
var pwd = $get("tbxPwd").value;
ValidateUser(uid,pwd);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Service.svc"/>
</Services>
</asp:ScriptManager>
</div>
:<input id="tbxUid" type="text" /><br />
: <input id="tbxPwd" type="text" />
<input id="Button1" type="button" value=" " onclick="return Button1_onclick()" />
</form>
</body>
</html>
9.실행 결 과 는 다음 과 같다.사용자 이름과 비밀번호 가 모두 sa 일 때 인증 을 통 해 사용자 이름과 친구 가 sa 가 아 닐 때 검증 을 통과 할 수 없다.  10.질문 있 으 면 이메일 로 보 내 주세요[email protected]

좋은 웹페이지 즐겨찾기