[C#][ASP.NET]如何使用Client Script呼叫Server Function
前幾天剛好有相關需求,自己打算使用ajax PageMethods來實現,這裡記錄備忘一下。
.aspx
TextBox:輸入使用者名稱
Label:顯示歡迎訊息
ScriptManager請設定EnablePageMethods="true"(asp.net ajax和ScriptManager是很親密的..XD)
Client Script(使用PageMethods呼叫Server Function時都要指定接收結果的JavaScript function)
<script type="text/javascript">
function CallServer(srcid,destid) {
//取得來源控制項 Value
var value = $("#" + srcid).val();
//呼叫Server Function
PageMethods.Wellcome(value, OnSuccess, OnFailure, destid);
}
function OnSuccess(result, destid) {
//成功時,目地控制項顯示所接收結果
$("#" + destid).text(result);
}
function OnFailure(error, destid) {
if (error != null) {
alert(error.get_message());
}
}
</script>
.aspx.cs
[WebMethod]
public static string Wellcome(string name)
{
if( string.IsNullOrEmpty( name ) )
return string.Empty;
else
return "歡迎 " + name +" 參觀";
}
記得要宣告成public static並加上[WebMethod]修飾詞。
protected void Page_Load( object sender, EventArgs e )
{
if( !IsPostBack )
{
//當textbpx失去焦點時執行client script(callserver function)
TextBox1.Attributes.Add( "onblur", "CallServer('" + TextBox1.ClientID + "','" + Label1.ClientID + "')" );
}
}
註冊client function到TextBox1的onblur事件上。
結果:
輸入姓名。
textbox失去焦點時,顯示歡迎訊息。