ASP.NET異步回調(diào)開(kāi)發(fā)實(shí)例淺析
ASP.NET異步回調(diào)開(kāi)發(fā)實(shí)例淺析
ASP.NET異步回調(diào)的重要性:在實(shí)際開(kāi)發(fā)中,ASP.NET 客戶端異步回調(diào)技術(shù)才是王道。下面我們進(jìn)行 ASP.NET 開(kāi)發(fā)重構(gòu)以實(shí)現(xiàn)異步回調(diào)。
之前的HTML代碼示例中,onclick事件寫在了HTML中,現(xiàn)在從中移出至外部的JS。
- ﹤label﹥用戶名﹤/label﹥
- ﹤span﹥username value﹤/span﹥
- ﹤a href="#" id="divElem"﹥查看﹤/a﹥
- 在JavaScript代碼中給ajaxread方法加入了onclick事件處理:
- var divElem = document.getElementById('divElem');
- var span = document.getElementsByTagName('span');
- divElem.onclick = function()
- {
- span[0].innerHTML = result;
- return false;
- }
其中 result 是這個(gè)方法的傳值參數(shù)。
另外,還定義了一個(gè)處理回調(diào)時(shí)出錯(cuò)的方法:
- function CallbackError(result)
- {
- alert(result);
- }
下面是ASP.NET異步回調(diào)之服務(wù)端程序的示例部分:
- public partial class _Default : Page,
- ICallbackEventHandler
- {
- public void RaiseCallbackEvent(string result)
- {
- }
- public string GetCallbackResult()
- {
- string username = usernameValue;
- return username;
- }
- protected void Page_Load(object sender,
- EventArgs e)
- {
- string callback =
- Page.ClientScript.GetCallbackEventReference(
- this, null, "ajaxread", null, "CallbackError", true);
- Page.ClientScript.RegisterStartupScript(
- this.GetType(), "_Default", callback, true);
- }
- }
其中 usernameValue 是數(shù)據(jù)處理的變量,具體實(shí)現(xiàn)代碼略。
程序編譯后,運(yùn)行結(jié)果與之前用異步回傳是一致的,但代碼重構(gòu)改為異步回調(diào)后,無(wú)論是程序可讀性,還是代碼精簡(jiǎn)度,都提升了不少。
我通過(guò)Firebug觀察到客戶端代碼中的數(shù)據(jù)交互處理是文本(Text)而不是XML,這是 ASP.NET 默認(rèn)的異步回調(diào)數(shù)據(jù)處理的方式吧。
在ASP.NET 服務(wù)端控件中就帶有Ajax特性的功能了,如 GridView 內(nèi)帶了利用異步回調(diào)技術(shù)的分頁(yè)功能,這樣可以少寫了一些代碼量。
在 GridView 的屬性中設(shè)置:AllowPaging="true" EnableSortingAndPagingCallbacks="true"。數(shù)據(jù)綁定在 Page_Load事件和GridView控件的OnPageIndexChanging事件中調(diào)用。這樣的分頁(yè)是Ajax的異步回調(diào)的了。
下面是個(gè)實(shí)際運(yùn)用中簡(jiǎn)單的實(shí)例:根據(jù)下拉列表所選中項(xiàng)點(diǎn)擊“查看”按鈕后,顯示相應(yīng)的數(shù)據(jù)。默認(rèn)顯示所有的數(shù)據(jù)。
ASP.NET異步回調(diào)在程序中設(shè)計(jì)了兩個(gè)Gridview,一個(gè)顯示默認(rèn)的所有數(shù)據(jù)、另一個(gè)顯示查詢后的數(shù)據(jù):
- ﹤span﹥按文章分類名稱:﹤/span﹥
- ﹤asp:DropDownList ID="ArticleTypeDD" runat="server"﹥
- ﹤/asp:DropDownList﹥
- ﹤asp:Button ID="SearchLB"
- OnClick="SearchLB_Click" Text="查看"
- runat="server" /﹥
- ﹤asp:GridView ID="grdArticles"
- AllowPaging="true" PageSize="15"
- EnableSortingAndPagingCallbacks="true"
- OnPageIndexChanging="grdArticles_PageIndexChanging"
- runat="server" /﹥
- ﹤asp:GridView ID="grdArticlesInType" AllowPaging="true"
- PageSize="15" EnableSortingAndPagingCallbacks="true"
- OnPageIndexChanging="grdArticlesInType_PageIndexChanging"
- runat="server" /﹥
ASP.NET異步回調(diào)之cs代碼部分:
- protected void Page_Load(object sender, EventArgs e)
- {
- grdArticles.DataSource = BindData();
- grdArticles.DataBind();
- grdArticlesInType.DataSource = BindData1();
- grdArticlesInType.DataBind();
- }
- protected void Page_PreRender(object sender,
- EventArgs e)
- {
- if (!IsPostBack)
- {
- ArticleTypeDD.DataSource = ArticleAccess.GetArticleTypeName();
- ArticleTypeDD.DataTextField = "ArticleTypeName";
- ArticleTypeDD.DataValueField = "ArticleTypeId";
- ArticleTypeDD.DataBind();
- }
- }
- protected void grdArticles_PageIndexChanging(
- object sender, GridViewPageEventArgs e)
- {
- grdArticles.PageIndex = e.NewPageIndex;
- grdArticles.DataSource = BindData();
- grdArticles.DataBind();
- }
- protected void grdArticlesInType_PageIndexChanging(
- object sender, GridViewPageEventArgs e)
- {
- grdArticlesInType.PageIndex = e.NewPageIndex;
- grdArticlesInType.DataSource = BindData1();
- grdArticlesInType.DataBind();
- }
- protected void SearchLB_Click(object sender,
- EventArgs e)
- {
- grdArticles.Visible = false;
- grdArticlesInType.Visible = true;
- grdArticlesInType.DataSource = BindData1();
- grdArticlesInType.DataBind();
- }
在這里,BindData()方法、BindData1()方法分別返回兩個(gè)GridView控件的數(shù)據(jù)綁定的DataTable對(duì)象實(shí)例。方法具體代碼略過(guò)。分頁(yè)運(yùn)行結(jié)果是默認(rèn)的分頁(yè)界面。
ASP.NET異步回調(diào)的基本內(nèi)容就向你介紹到這里希望對(duì)你了解和學(xué)習(xí)ASP.NET異步回調(diào)有所幫助。
【編輯推薦】

















