<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
//客戶端執行的方法
//下面的方法是接收並處理服務器方法執行的返回結果
function Success(args, context) {
message.innerText = args;
}
//下面的方式是當接收服務器方法處理的結果發生異常時調用的方法
function Error(args, context) {
message.innerText = "發生了異常";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<table border="1" cellpadding="0" cellspacing="0" width="400px">
<tr>
<td width="100px">
用戶名
</td>
<td>
<input type="text" size="10" maxlength="20" id="txtUserName" onblur="CallServerMethod(txtUserName.value,null)" /><span
id="message"></span>
</td>
</tr>
<tr>
<td>
密碼
</td>
<td>
<input type="password" size="10" maxlength="20" id="txtPwd" />
</td>
</tr>
</table>
</form>
</body>
</html>
後臺:
public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
{
string result = "";
// 定義在服務器端運行的回調方法.
public void RaiseCallbackEvent(String eventArgument)
{
if (eventArgument.ToLower().IndexOf("admin") != -1)
{
result = eventArgument + "不能作爲用戶名註冊。";
}
else
{
result = eventArgument + "可以註冊。";
}
// throw new Exception();
}
//定義返回回調方法執行結果的方法
public string GetCallbackResult()
{
return result;
}
//服務器上執行的方法
public void Page_Load(Object sender, EventArgs e)
{
// 獲取當前頁的ClientScriptManager的引用
ClientScriptManager csm = Page.ClientScript;
// 獲取回調引用。會在客戶端生成WebForm_DoCallback方法,調用它來達到異步調用。這個方式是微軟寫的方法,會被髮送到客戶端
//注意這裏的"Success"和"Error"兩個字符串分別客戶端代碼中定義的兩個javascript函數
//下面的方法最後一個參數的意義:true表示執行異步回調,false表示執行同步回調
String reference = csm.GetCallbackEventReference(this, "args", "Success", "", "Error", false);
String callbackScript = "function CallServerMethod(args, context) {" +
reference + " }";
// 向當前頁面註冊javascript腳本代碼
csm.RegisterClientScriptBlock(this.GetType(), "CallServerMethod",
callbackScript, true);
}
}