asp.net使用母版頁中使用ajax腳本取數(shù)據(jù)
更新時間:2010年09月24日 13:59:30 作者:
因母版頁繼承自UserControl,我們無法像正常頁面那樣使用Jquey或Ajax的PageMethods等無刷新方法取數(shù)據(jù)。不過可以使用ajax提供的Sys.Net.WebRequest來解決這一問題。
方法如下:
1、 頁面中拖入ScriptManager。以便于使用Ajax腳本。同時放在其它客戶端控件,用于觸發(fā)NetPost方法。這里不列出客戶端控件。
<asp:ScriptManager ID="smMaster" runat="server" ScriptMode="Auto" EnablePageMethods="true">
</asp:ScriptManager>
2、在Master源碼中編寫js
function NetPost() {
//創(chuàng)建實例
var wRequest = new Sys.Net.WebRequest();
//設(shè)置請求URL
wRequest.set_url("../CheckState/CheckNetState.aspx");
//定義參數(shù)
var body = "ip=192.168.1.1";
//設(shè)置參數(shù)
wRequest.set_body(body);
//設(shè)置請求方式
wRequest.set_httpVerb("POST");
//請求完成處理函數(shù)
wRequest.add_completed(PostNet);
//執(zhí)行請求
wRequest.invoke();
}
function PostNet(exector, eventArgs) {
//執(zhí)行器的狀態(tài)E :responseAvailable、aborted 或 timedOut。
//僅當(dāng) responseAvailable 返回 true 時,事件處理程序才能訪問執(zhí)行器的其他響應(yīng)信息。
if (exector.get_responseAvailable()) {
//判斷狀態(tài)是否正常
if (exector.get_statusCode() == '200') {
//得到返回值
var returnInfo = exector.get_responseData();
if (returnInfo == "0") {
//顯示相關(guān)內(nèi)容
}
}
}
}
3、add_completed()說明:
注冊的事件處理程序函數(shù)必須接受兩個參數(shù):
1) 對發(fā)出網(wǎng)絡(luò)請求的執(zhí)行器的引用。通過訪問執(zhí)行器,可以檢查其狀態(tài)和檢索響應(yīng)數(shù)據(jù)。
2) eventArgs 參數(shù),它由引發(fā)完成請求事件的執(zhí)行器設(shè)置。
4、編寫請求頁面
請求地址為一個頁面,沒有任何HTML內(nèi)容,僅在Page_load方法中編寫代碼。本例中的請求頁面放在根目錄的CheckState文件夾下,名稱為:CheckNetState.aspx 。
5、請求頁面代碼如下,主要實現(xiàn)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();
//得到參數(shù)
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、用其它頁面套用母版頁后,測試。
Sys.Net.WebRequest請參考:http://msdn.microsoft.com/zh-cn/library/bb310979.aspx
1、 頁面中拖入ScriptManager。以便于使用Ajax腳本。同時放在其它客戶端控件,用于觸發(fā)NetPost方法。這里不列出客戶端控件。
復(fù)制代碼 代碼如下:
<asp:ScriptManager ID="smMaster" runat="server" ScriptMode="Auto" EnablePageMethods="true">
</asp:ScriptManager>
2、在Master源碼中編寫js
復(fù)制代碼 代碼如下:
function NetPost() {
//創(chuàng)建實例
var wRequest = new Sys.Net.WebRequest();
//設(shè)置請求URL
wRequest.set_url("../CheckState/CheckNetState.aspx");
//定義參數(shù)
var body = "ip=192.168.1.1";
//設(shè)置參數(shù)
wRequest.set_body(body);
//設(shè)置請求方式
wRequest.set_httpVerb("POST");
//請求完成處理函數(shù)
wRequest.add_completed(PostNet);
//執(zhí)行請求
wRequest.invoke();
}
function PostNet(exector, eventArgs) {
//執(zhí)行器的狀態(tài)E :responseAvailable、aborted 或 timedOut。
//僅當(dāng) responseAvailable 返回 true 時,事件處理程序才能訪問執(zhí)行器的其他響應(yīng)信息。
if (exector.get_responseAvailable()) {
//判斷狀態(tài)是否正常
if (exector.get_statusCode() == '200') {
//得到返回值
var returnInfo = exector.get_responseData();
if (returnInfo == "0") {
//顯示相關(guān)內(nèi)容
}
}
}
}
3、add_completed()說明:
注冊的事件處理程序函數(shù)必須接受兩個參數(shù):
1) 對發(fā)出網(wǎng)絡(luò)請求的執(zhí)行器的引用。通過訪問執(zhí)行器,可以檢查其狀態(tài)和檢索響應(yīng)數(shù)據(jù)。
2) eventArgs 參數(shù),它由引發(fā)完成請求事件的執(zhí)行器設(shè)置。
4、編寫請求頁面
請求地址為一個頁面,沒有任何HTML內(nèi)容,僅在Page_load方法中編寫代碼。本例中的請求頁面放在根目錄的CheckState文件夾下,名稱為:CheckNetState.aspx 。
5、請求頁面代碼如下,主要實現(xiàn)Ping功能。
復(fù)制代碼 代碼如下:
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();
//得到參數(shù)
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、用其它頁面套用母版頁后,測試。
Sys.Net.WebRequest請參考:http://msdn.microsoft.com/zh-cn/library/bb310979.aspx
您可能感興趣的文章:
- 詳解Asp.Net母版頁元素ID不一致的體現(xiàn)
- Asp.Net套用母版頁后元素ID不一致(個人總結(jié))
- 淺談Asp.Net母版頁和內(nèi)容頁運行機制
- 淺談Asp.Net母版頁的相關(guān)知識
- 在ASP.NET 2.0中操作數(shù)據(jù)之三:創(chuàng)建母版頁和站點導(dǎo)航
- asp.net母版頁如何使用
- ASP.NET母版頁基礎(chǔ)知識介紹
- ASP.NET中母版頁和shtml實例入門
- ASP.Net巧用窗體母版頁實例
- ASP.NET下母版頁和內(nèi)容頁中的事件發(fā)生順序整理
- ASP.NET 2.0 中的創(chuàng)建母版頁
- ASP.NET MVC使用母版頁視圖
相關(guān)文章
asp.net updatepanel 導(dǎo)致JS不能加載,而無法使用的解決方法
asp.net updatepanel 局部刷新,導(dǎo)致JS不能加載,而無法使用,而且 updatepanel會刷兩次,郁悶的,解決方法如下2013-08-08
Asp.Net 5分鐘實現(xiàn)網(wǎng)頁實時監(jiān)控
在項目開發(fā)中經(jīng)常會用到監(jiān)控功能,下面通過本篇文章給大家介紹Asp.Net 5分鐘實現(xiàn)網(wǎng)頁實時監(jiān)控,需要的朋友可以參考下2017-12-12
ASP.NET從字符串中查找字符出現(xiàn)次數(shù)的具體實現(xiàn)方法
今天在一場“特殊的討論”中引入了一個問題,如何在C#求出字符串中某字符的出現(xiàn)次數(shù),比如求“ADSFGEHERGASDF”中“A”出現(xiàn)的次數(shù)2013-11-11
深入理解__doPostBack 客戶端調(diào)用服務(wù)端事件
__doPostBack是一個純粹并且是非常簡單的javascript函數(shù),大部分的頁面PostBack都是由它觸發(fā)的。2008-08-08
ASP.NET Gridview 中使用checkbox刪除的2種方法實例分享
ASP.NET Gridview 中使用checkbox刪除的2種方法實例分享,需要的朋友可以參考一下2013-06-06

