asp.net使用母版頁中使用ajax指令碼取資料

126雲發表於2021-01-05

因母版頁繼承自UserControl,我們無法像正常頁面那樣使用Jquey或Ajax的PageMethods等無重新整理方法取資料。不過可以使用ajax提供的Sys.Net.WebRequest來解決這一問題。

方法如下: 
  1、 頁面中拖入ScriptManager。以便於使用Ajax指令碼。同時放在其它客戶端控制元件,用於觸發NetPost方法。這裡不列出客戶端控制元件。 

複製程式碼程式碼如下:


<asp:ScriptManager ID="smMaster" runat="server" ScriptMode="Auto" EnablePageMethods="true"> 
</asp:ScriptManager> 


  2、在Master原始碼中編寫js 

複製程式碼程式碼如下:


function NetPost() { 
//建立例項 
var wRequest = new Sys.Net.WebRequest(); 
//設定請求URL 
wRequest.set_url("../CheckState/CheckNetState.aspx"); 
//定義引數 
var body = "ip=192.168.1.1"; 
//設定引數 
wRequest.set_body(body); 
//設定請求方式 
wRequest.set_httpVerb("POST"); 
//請求完成處理函式 
wRequest.add_completed(PostNet); 
//執行請求 
wRequest.invoke(); 

function PostNet(exector, eventArgs) { 
//執行器的狀態E :responseAvailable、aborted 或 timedOut。 
  //僅當 responseAvailable 返回 true 時,事件處理程式才能訪問執行器的其他響應資訊。 
if (exector.get_responseAvailable()) { 
  //判斷狀態是否正常 
if (exector.get_statusCode() == '200') { 
     //得到返回值 
var returnInfo = exector.get_responseData(); 
if (returnInfo == "0") { 
      //顯示相關內容 




  3、add_completed()說明: 
   註冊的事件處理程式函式必須接受兩個引數: 
  1) 對發出網路請求的執行器的引用。通過訪問執行器,可以檢查其狀態和檢索響應資料。 
  2) eventArgs 引數,它由引發完成請求事件的執行器設定。 
  4、編寫請求頁面 
    請求地址為一個頁面,沒有任何HTML內容,僅在Page_load方法中編寫程式碼。本例中的請求頁面放在根目錄的CheckState資料夾下,名稱為:CheckNetState.aspx 。 
  5、請求頁面程式碼如下,主要實現Ping功能。 

複製程式碼程式碼如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
namespace Iaddtech.Environmental.Web.UI.CheckState 

public partial class CheckNetState : System.Web.UI.Page 

protected void Page_Load(object sender, EventArgs e) 

Response.Clear(); 
//得到引數 
string ip = Request.Form["ip"]; 
int isConnect = PingServer(ip); 
//輸入返回值 
Response.Write(isConnect.ToString()); 
Response.End(); 

private int PingServer(string ip) 

System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping(); 
System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions(); 
options.DontFragment = true; 
string data = "t"; 
byte[] buffer = System.Text.Encoding.ASCII.GetBytes(data); 
int timeout = 1000; // Timeout 時間,單位:毫秒 
System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options); 
if (reply.Status == System.Net.NetworkInformation.IPStatus.Success) 
return 0; 
else 
return 1; 



  6、用其它頁面套用母版頁後,測試。 喜歡的可以關注西昆雲


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957453/viewspace-2747479/,如需轉載,請註明出處,否則將追究法律責任。

相關文章