您好,登錄后才能下訂單哦!
ASP.NET中怎么實現(xiàn)異步回調(diào),相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
ASP.NET異步回調(diào)的重要性:在實際開發(fā)中,ASP.NET 客戶端異步回調(diào)技術(shù)才是王道。下面我們進行 ASP.NET 開發(fā)重構(gòu)以實現(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 是這個方法的傳值參數(shù)。
另外,還定義了一個處理回調(diào)時出錯的方法:
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ù)處理的變量,具體實現(xiàn)代碼略。
程序編譯后,運行結(jié)果與之前用異步回傳是一致的,但代碼重構(gòu)改為異步回調(diào)后,無論是程序可讀性,還是代碼精簡度,都提升了不少。
我通過Firebug觀察到客戶端代碼中的數(shù)據(jù)交互處理是文本(Text)而不是XML,這是 ASP.NET 默認(rèn)的異步回調(diào)數(shù)據(jù)處理的方式吧。
在ASP.NET 服務(wù)端控件中就帶有Ajax特性的功能了,如 GridView 內(nèi)帶了利用異步回調(diào)技術(shù)的分頁功能,這樣可以少寫了一些代碼量。
在 GridView 的屬性中設(shè)置:AllowPaging="true" EnableSortingAndPagingCallbacks="true"。數(shù)據(jù)綁定在 Page_Load事件和GridView控件的OnPageIndexChanging事件中調(diào)用。這樣的分頁是Ajax的異步回調(diào)的了。
下面是個實際運用中簡單的實例:根據(jù)下拉列表所選中項點擊“查看”按鈕后,顯示相應(yīng)的數(shù)據(jù)。默認(rèn)顯示所有的數(shù)據(jù)。
ASP.NET異步回調(diào)在程序中設(shè)計了兩個Gridview,一個顯示默認(rèn)的所有數(shù)據(jù)、另一個顯示查詢后的數(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()方法分別返回兩個GridView控件的數(shù)據(jù)綁定的DataTable對象實例。方法具體代碼略過。分頁運行結(jié)果是默認(rèn)的分頁界面。
看完上述內(nèi)容,你們掌握ASP.NET中怎么實現(xiàn)異步回調(diào)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。