ASP.NET 使用PageMethods方法(textbox) 讓 客戶端 呼叫「伺服器端方法」

類似AJAX的效果,對這部分還在摸索中...
這部分的範例為參考別的教學網站而來,有些機制真的還蠻麻煩的。
不過我想應該只是現在不熟悉吧!


新增一個 TestJavaScript.js 在根目錄
function CallMe(src,dest) {
    
     var ctrl = document.getElementById(src);
     // call server side method (注意4個參數 1:傳入的參數, 2:正確時呼叫的方法, 3:失敗時呼叫的方法, 4:最後傳回的clientID)
        PageMethods.GetContactName(ctrl.value,CallSuccess,CallFailed,dest);
 }
 
 // 當程式正確時呼叫的方法
 function CallSuccess(res, destCtrl)
 {
     alert(res + "," + destCtrl);
     var dest = document.getElementById(destCtrl);
     dest.value = res;
 }
 
 // 當程式錯誤時呼叫的方法
 function CallFailed(res, destCtrl) {
     
     alert(res.get_message());
 }


接著客戶端畫面,ScriptManager這個ID的tag很重要,要使用PageMethods方法必須設定該行
C001.aspx
<%@ Page Language="c#" AutoEventWireup="true" CodeFile="C001.aspx.cs" Inherits="C001" %>



    




    
按下鍵盤Tab按鍵
TextBox1: TextBox2: TextBox3:


接著伺服器後端程式,.ClientID的目的就是 因為有主版頁面的話,Client的ID會不同,所以將Client值傳給Function做處理
C001.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class C001 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            TextBox1.Attributes.Add("onclick", "CallMe('" + TextBox1.ClientID + "', '" + TextBox2.ClientID + "')");
            TextBox2.Attributes.Add("onblur", "CallMe('" + TextBox2.ClientID + "', '" + TextBox3.ClientID + "')");
            TextBox3.Attributes.Add("onblur", "CallMe('" + TextBox3.ClientID + "', '" + TextBox1.ClientID + "')");
        }
    }


    [System.Web.Services.WebMethod]
    public static string GetContactName(string TextBox1text)
    {
        return TextBox1text + " 文字串";
    }  
}


範例下載

沒有留言:

張貼留言