ASP.NET中怎么實(shí)現(xiàn)異步回調(diào),相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
創(chuàng)新互聯(lián)公司專注于武侯網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供武侯營(yíng)銷型網(wǎng)站建設(shè),武侯網(wǎng)站制作、武侯網(wǎng)頁(yè)設(shè)計(jì)、武侯網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造武侯網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供武侯網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
ASP.NET異步回調(diào)的重要性:在實(shí)際開發(fā)中,ASP.NET 客戶端異步回調(diào)技術(shù)才是王道。下面我們進(jìn)行 ASP.NET 開發(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)后,無論是程序可讀性,還是代碼精簡(jiǎn)度,都提升了不少。
我通過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í)例。方法具體代碼略過。分頁(yè)運(yùn)行結(jié)果是默認(rèn)的分頁(yè)界面。
看完上述內(nèi)容,你們掌握ASP.NET中怎么實(shí)現(xiàn)異步回調(diào)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!