2012年9月19日 星期三

[C#][ASP.NET]如何使用Client Script呼叫Server Function


前幾天剛好有相關需求,自己打算使用ajax PageMethods來實現,這裡記錄備忘一下。
.aspx
image
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>


image
.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事件上。

結果:
image
輸入姓名。

image
textbox失去焦點時,顯示歡迎訊息。

沒有留言:

張貼留言