ASP.NET MVC學習之Ajax(完結)

一.前言

通過上面的一番學習,大家一定收獲不少。但是總歸會有一個結束的時候,但是這個結束也意味著新的開始。

如果你是從事ASP.NET開發,并且也使用了第三方控件,那么一定會覺得ASP.NET開發ajax十分的簡單,而ASP.NET MVC學習到現在頁面都是刷新的,所以這節就是ASP.NET MVC的最后一節,通過這節的學習我們將能夠實現通過ajax提交表單,下面我們開始繼續學習。

?

二.準備工作

1、首先確保引用了以下js庫在_Layout中:

?

2、新建一個HomeController,然后在其中寫入如下代碼:

 1 namespace MvcStudy.Controllers
 2 {
 3     public class HomeController : Controller
 4     {
 5         public ActionResult Index()
 6         {
 7             return View();
 8         }
 9 
10         [HttpPost]
11         public ActionResult Index([Bind(Prefix="name")]String reg)
12         {
13             return PartialView("Result", reg);
14         }
15     }
16 }
View Code

?

3、在Views下新建一個Home文件夾,并在其中新建一個Index視圖,同時在Views/Shared中新建一個Result視圖,到此為止準備工作完成了。

?

?

三.利用Ajax提交表單

首先我們打開剛才新建的Index視圖,然后在其中寫入如下代碼:

 1 @{
 2     ViewBag.Title = "Index";
 3     AjaxOptions option = new AjaxOptions
 4     {
 5         UpdateTargetId = "targetdiv"
 6     };
 7 }
 8 
 9 @using (Ajax.BeginForm(option))
10 {
11     <div id="targetdiv">
12     </div>
13     @Html.TextBox("name")
14     <div>
15         <input type="submit" value="注冊" />
16     </div>
17 }

其中AjaxOptions同來設置ajax相關的參數,而Ajax.BeginForm則表示該表單采用ajax方式提交,其中AjaxOptions中的UpdateTargetId表示完成ajax請求之后內容的輸出的容器。

?

打開Views/Shared下的Result視圖,寫入:

1 @{
2     String text = (string)Model;
3 }
4 
5 @text

?

?

作為簡單的示例,筆者直接輸出了Model。

然后我們就可以F5運行,在文本框中輸入值,最后可以發現頁面并沒有刷新。但是內容卻從指定的div中呈現了,這里的原理很簡單,ASP.NET MVC就是利用jquery中的ajax來將表單中的參數提交給指定的動作,然后由這個動作直接返回一段html代碼,最后在從指定的id的容器中輸出。

?

?

四.實現加載中效果

如今很多網站都會在進行ajax請求過程中呈現一段表示加載中的標記,而ASP.NET MVC中的ajax也提供給我們這個功能,下面我們就修改Index視圖:

 1 @{
 2     ViewBag.Title = "Index";
 3     AjaxOptions option = new AjaxOptions
 4     {
 5         UpdateTargetId = "targetdiv",
 6         LoadingElementId = "wait",
 7         LoadingElementDuration = 1000
 8     };
 9 }
10 
11 <div id="wait" style="display:none" >
12     耐心等待會...
13 </div>
14 @using (Ajax.BeginForm(option))
15 {
16     <div id="targetdiv">
17     </div>
18     @Html.TextBox("name")
19     <div>
20         <input type="submit" value="注冊" />
21     </div>
22 }
View Code

?

我們通過LoadingElementId來設置加載的標簽而LoadingElementDuration則表示動畫持續的時間,這里我們寫了一個div用來呈現,并且該div的display要設置為none,這樣我們重新打開頁面再提交一次,就可以看到加載中的效果了。

?

?

五.Ajax鏈接

很多時候并不總是需要提交表單來實現ajax,也有很多僅僅只是通過點擊按鈕的方式來進行ajax請求,下面我們就利用Ajax.ActionLink來實現,我們只要在Index視圖中的下面填上如下代碼:

1 @Ajax.ActionLink("點我","Index",new {name= "oh no"},new AjaxOptions{
2     UpdateTargetId = "targetdiv",
3     Confirm = "確定嗎?",
4     HttpMethod = "Post"
5 });

這里就不介紹了,因為和Html.ActionLink的用法十分類似,唯一的區別就是多了一個AjaxOptions參數,我們刷新頁面。點擊這個鏈接就可以看到效果了,如果你想問按鈕在哪呢,這個問題似乎沒有可問性,不是有萬能的CSS嗎?

?

?

六.Ajax回調

對于部分喜愛寫javascript的讀者來說,上面這些無疑是災難。這樣你的javascript水平如何體現呢,其實ASP.NET MVC自帶的依然有很多問題,所以這個時候我們可以監聽它的過程,從而可以更好的完成功能,下面我們監聽它的所有事件,我們仍然是修改Index視圖的代碼:

 1 @Ajax.ActionLink("點我","Index",new {name= "oh no"},new AjaxOptions{
 2     UpdateTargetId = "targetdiv",
 3     Confirm = "確定嗎?",
 4     HttpMethod = "Post",
 5     OnBegin = "onbegin",
 6     OnComplete = "oncomplete",
 7     OnFailure = "onfailure",
 8     OnSuccess = "onsuccess"
 9 });
10 
11 <script type="text/javascript">
12     function onbegin() {
13         console.log("開始啦");
14     }
15 
16     function oncomplete(request, status) {
17         console.log("完成了,好下班了");
18     }
19 
20     function onfailure(request, error) {
21         console.log("報錯了,要加班了");
22     }
23 
24     function onsuccess(data) {
25         console.log("改好了,走人嘍");
26     }
27 </script>
View Code

?

?

這里我們監聽了所有的事件,下面我們可以看到正確調用下的輸出:

?

當然個人認為ASP.NET MVC的ajax還是有點雞肋,用個backbone.js框架加上ASP.NET Web API基本上直接秒殺了,當然對于簡單的頁面用用自帶的還是蠻快捷的。

?

七.ASP.NET MVC系列所有鏈接

ASP.NET MVC學習之路由篇(1)

ASP.NET MVC學習之路由篇(2)

ASP.NET MVC學習之路由篇(3)

ASP.NET MVC學習之過濾器篇(1)

ASP.NET MVC學習之過濾器篇(2)

ASP.NET MVC學習之控制器篇擴展性

ASP.NET MVC學習之視圖(1)

ASP.NET MVC學習之視圖篇(2)

ASP.NET MVC學習之模型模板篇

ASP.NET MVC學習之模型綁定(1)

ASP.NET MVC學習之模型綁定(2)

ASP.NET MVC學習之模型驗證篇

?

?

轉載于:https://www.cnblogs.com/yaozhenfa/p/asp_net_mvc_ajax.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375833.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375833.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375833.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

認知計算機語言學,什么是認知語言學

文獻綜述&#xff1a;“語文素養”內涵研究綜述“語文素養”內涵研究綜述摘要&#xff1a;“語文素養”是新一輪語文課程改革所提出的一個重要概念&#xff0c;其作為語文課程改革的目標與核心理念&#xff0c;擠兌了“語文能力”的核心地位。目前&#xff0c;人們對“語文素養…

data URI scheme及其應用

data URI scheme通俗來講就是圖片直接塞到HTML而不是由HTTP。這樣從表面上看會降低一次HTTP的請求&#xff0c;實現了對于網頁的優化&#xff08;只是看了其它一些文章data URI由于將圖片採用了base 64的編碼方式進行表達&#xff0c;所以還是須要進行HTTP去下載內容&#xff0…

Linux 禁用觸摸板

1&#xff0c;首先需要查看觸摸板&#xff1a; 命令&#xff1a;xinput list 結果&#xff1a; ? Virtual core pointer         id2 [master pointer (3)]    ? ? Virtual core XTEST pointer      id4 […

大學新生學計算機推薦電腦,大學新生用什么電腦好呢?

科技的發展日新月異&#xff0c;數碼的yi巴為你資訊。今天是7月的開頭&#xff0c;我們正式邁入了2019下半年。7月開頭也正是許多大多數高考生快忙完志愿填報&#xff0c;開始考慮大學該選擇什么電腦的時候。今天yi巴就來跟大家聊聊該大學新生該怎么選擇電腦&#xff0c;并給予…

NewCode----句子反轉

題目描述 給定一個句子&#xff08;只包含字母和空格&#xff09;&#xff0c; 將句子中的單詞位置反轉&#xff0c;單詞用空格分割, 單詞之間只有一個空格&#xff0c;前后沒有空格。 比如&#xff1a; &#xff08;1&#xff09; “hello xiao mi”-> “mi xiao hello” …

mac boot2docker certs not valid with 1.7

摘自&#xff1a;https://github.com/boot2docker/boot2docker/issues/824 An error occurred trying to connect: Get https://192.168.59.103:2376/v1.19/containers/json: x509: certificate is valid for 127.0.0.1, 10.0.2.15, not 192.168.59.103 I come with the same p…

對象之間的交互

之前寫過一篇隨筆《剪刀剪紙》是給一些新同事講面向對象時用的&#xff0c;當時就感覺有些不順暢&#xff0c;不過用來給新同事入門足夠了就沒多想&#xff0c;最近看書時偶爾走神把這件事想起來了&#xff0c;順便群里討論時談到聚合之間的方法調用&#xff0c;于是決定寫一篇…

NewCode----數串

題目描述&#xff1a; 設有n個正整數&#xff0c;將他們連接成一排&#xff0c;組成一個最大的多位整數。 如:n3時&#xff0c;3個整數13,312,343,連成的最大整數為34331213。 如:n4時,4個整數7,13,4,246連接成的最大整數為7424613。 輸入描述: 有多組測試樣例&#xff0c…

計算機跨專業專插本學音樂,歡迎投稿丨專插本可以跨專業考,只要肯堅持!

點擊上方△藍字可關注我們昵稱E師姐性別女插本復習資料教材、小紅書、CB398、啟航等插本關注的公眾號、網站等介紹微信公眾號居多&#xff1a;專插本資料庫、專插本直通車、廣東省專插本、插本最前線等等……專科學校和專業廣州城市職業學院 會計插本學校和專業廣東財經大學華商…

Android,監控ContentProvider的數據改變

有時候應用中需要監聽ContentProvider的改變并提供響應&#xff0c;這時候就要利用ContentObserver類了 不管是ContentProvider中實現的,insert,delete,update方法中的任何一個&#xff0c;程序都會調用getContext().getContentResolver().notifyChange(uri,null); 這行代碼可用…

[leetcode]Sort List

題目要求&#xff1a;Sort a linked list in O(n log n) time using constant space complexity. 數據結構定義&#xff1a; 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : v…

北京市中 高英語聽說計算機考,2021年北京高考首次英語聽說機考時間確定,共五種題型...

從明年開始&#xff0c;北京市高考統考英語科目增加口語考試&#xff0c;連同之前的聽力考試一起&#xff0c;實行一年兩考。今天&#xff0c;北京教育考試院發布消息&#xff0c;2021年高考英語聽說計算機考試首考將于2020年12月12日進行。12月7日起&#xff0c;考生可登陸北京…

NewCode----彩色寶石項鏈

題目描述: 有一條彩色寶石項鏈&#xff0c;是由很多種不同的寶石組成的&#xff0c;包括紅寶石&#xff0c;藍寶石&#xff0c;鉆石&#xff0c;翡翠&#xff0c;珍珠等。有一天國王把項鏈賞賜給了一個學者&#xff0c;并跟他說&#xff0c;你可以帶走這條項鏈&#xff0c;但是…

插件開發-UI插件開發

1.新建類庫解決方案&#xff0c;引入命名空間,同時引入要添加UI Form的WebPart(在Portal\UILib目錄下)2.繼續UFSoft.UBF.UI.Custom.ExtendedPartBase&#xff0c;重寫AfterInit()方法&#xff0c;代碼如下&#xff0c;便于添加下拉列表按鈕&#xff0c;在原單據中UI先新增一下拉…

為博客園選擇一個小巧霸氣的語法高亮插件

博客園的語法高亮簡直蛋疼&#xff0c;于是乎就打算找一個靠譜的插件來改造下。各種百度谷歌&#xff0c;大致得到幾個推薦&#xff1a;SyntaxHighlighter&#xff0c;Snippet&#xff0c;Google Code Pretiffy&#xff0c;Highlight&#xff0c;SHJS。其實 SyntaxHighlighter …

計算器軟件設計和計算機軟件設計區別,求一個模擬計算器程序

# include# include# include# include# define MAX_OPERATOR_NUM 100//運算符棧數組長度# define MAX_DATA_NUM 100//運算數棧數組長度typedef struct OPStack//定義運算符棧{char opStack[MAX_OPERATOR_NUM];int top;}OPStack, *pOPStack;typedef struct DATAStack//定義操作…

python中print語句

學習鏈接1 學習鏈接2 1. 如果print語句后面什么符號都沒有是個換行語句&#xff0c;也就是是要另起一行。 2. 分號表示下次輸出是緊挨著這個光標位置輸出. 3. 而逗號是下次輸出與這次輸出有一定的空格之后接著輸出. namekk salutationMr. greetingHello, print greeting,sa…

計算機應用基礎論壇貼子怎么發,網絡課程論壇中長尾現象的應對策略——以《計算機應用基礎》網絡課程為例...

摘要&#xff1a;進入21世紀以來,互聯網就備受關注.由于我國信息設施資源建設穩步推進,互聯網的基礎更為堅實,發展更為迅速.據權威數據統計,中國至2009年約擁有130萬個BBS論壇,數量為全球第一,然而,作為分享和參與類應用的典型代表(更新博客,發帖/回帖)的使用率仍然偏低.筆者在…

解析Json需要設置Mime

IIS6.0 1.打開IIS添加Mime項 關聯擴展名&#xff1a;*.json內容類型(MIME)&#xff1a;application/x-javascript 2.添加映射&#xff1a; 位置在IIS對應站點右鍵屬性&#xff1a;”主目錄”-”應用程序設置”-”配置”-”映射”-”添加”&#xff0c;會打開”添加/編輯應用程序…

Using the Transient Fault Handling Application Block

http://msdn.microsoft.com/en-us/library/dn440719(vpandp.60).aspx轉載于:https://www.cnblogs.com/fengye87626/p/3772555.html