c .net ajax,Asp.net mvc 2中使用Ajax的三種方式

在Asp.net MVC中,我們能非常方便的使用Ajax。這篇文章將介紹三種Ajax使用的方式,分別為原始的Ajax調用、Jquery、Ajax Helper。分別采用這三種方式結合asp.net mvc去實現一個史上最簡單的留言板。

首先看一下原始的Ajax的調用的:

定義CommentController,代碼如下:

publicclassCommentController : Controller

{privateIList_comments=newList();publicActionResult Index()

{returnView();

}publicvoidAddCommentServer()

{stringcomment=Request["comment"].ToUpper();

_comments.Add("

"+comment+"");

Response.ContentType="text/html";

Response.Write(string.Join("\n", _comments.ToArray()));

}

}

在Asp.net MVC中添加一個custom_ajax.js,加入下面使用ajax的腳本代碼,調用AddCommentServer方法。

function getXmlHttpRequest() {

var xhr;//check for IE implementation(s)if(typeofActiveXObject!='undefined') {try{

xhr=newActiveXObject("Msxml2.XMLHTTP");

}catch(e) {

xhr=newActiveXObject("Microsoft.XMLHTTP");

}

}elseif(XMLHttpRequest) {//this works for Firefox, Safari, Operaxhr=newXMLHttpRequest();

}else{

alert("對不起,你的瀏覽器不支持ajax");

}returnxhr;

}

function getMessage() {//get our xml http request objectvar xhr=getXmlHttpRequest();//prepare the requestxhr.open("GET","Comment/AddCommentServer?comment="+document.getElementById("Comment").value,true)//setup the callback functionxhr.onreadystatechange=function() {//readyState 4 means we're doneif(xhr.readyState!=4)return;//populate the page with the resultdocument.getElementById('comments').innerHTML=document.getElementById('comments').innerHTML+xhr.responseText;

};//fire our requestxhr.send(null);

}

在View中引入此腳本,創建一個簡單的表單,并添加觸發的代碼:

Comments

Add Commentloading...

效果如下:

f0ae5b4fb9383eb47e2e763e65ea673b.png

第二種方式:利用Jquery:

在控制器中添加代碼IndexJquery方法和AddComment方法的代碼,CommentController代碼如下所示:

publicclassCommentController : Controller

{privateIList_comments=newList();publicActionResult Index()

{returnView();

}publicActionResult IndexJquery()

{returnView();

}publicActionResult AddComment(stringcomment)

{

_comments.Add("

"+comment+"");returnContent(string.Join("\n", _comments.ToArray()));

}publicvoidAddCommentServer()

{stringcomment=Request["comment"].ToUpper();

_comments.Add("

"+comment+"");

Response.ContentType="text/html";

Response.Write(string.Join("\n", _comments.ToArray()));

}

}

根據IndexJquery,創建View表單IndexJquery.aspx:

Comments

Add Commentloading...

在View中引用Jquery:

添加下面腳本:

});

});

function hijack(form, callback, format) {

$("#indicator").show();

$.ajax({

url: form.action,

type: form.method,

dataType: format,

data: $(form).serialize(),

completed: $("#indicator").hide(),

success: callback

});

}

function update_sessions(result) {//clear the form$("form.hijax")[0].reset();

$("#comments").append(result);

}

效果:與方式一效果一樣。

第三種方式:Ajax Helper

將最簡單的留言板修改成Ajax Helper的方式。

1、首先了解一下Ajax Helper下面四種方法。

a、Ajax.ActionLink():它將渲染成一個超鏈接的標簽,類似于Html.ActionLink()。當它被點擊之后,將獲取新的內容并將它插入到HTML頁面中。

b、Ajax.BeginForm():它將渲染成一個HTML的Form表單,類似于Html.BeginForm()。當它提交之后,將獲取新的內容并將它插入到HTML頁面中。

c、Ajax.RouteLink():Ajax.RouteLink()類似于Ajax.ActionLink()。不過它可以根據任意的routing參數生成URL,不必包含調用的action。使用最多的場景是自定義的IController,里面沒有action。

d、Ajax.BeginRouteForm():同樣Ajax.BeginRouteForm()類似于Ajax.BeginForm()。這個Ajax等同于Html.RouteLink()。

這個例子中使用Ajax.BeginForm(),下面具體了解Ajax.BeginForm()的參數。看下面代碼:

{

HttpMethod="POST",

UpdateTargetId="comments",

InsertionMode=InsertionMode.InsertAfter

})) {%>

actionName:AddComment(action的名字)

controllerName:CommentController(Controller的名字)

ajaxOptions:

HttpMethod:Ajax的請求方式,這里為POST

UpdateTargetId :Ajax請求的結果顯示的標簽的ID,這里為comments

InsertionMode:將Ajax結果插入頁面的方式,這里將ajax的結果放置到comments的后面

2、實現:

在CommentController中添加IndexAjaxHelp方法。

publicActionResult IndexAjaxHelp()

{returnView();

}

根據IndexAjaxHelp生成View表單IndexAjaxHelp.aspx,定義表單:

Comments

{

HttpMethod="POST",

UpdateTargetId="comments",

InsertionMode=InsertionMode.InsertAfter

})) {%>Add Comment

要在此View中添加下面兩個腳本文件:

這樣就行了,我們發現比用Jquery方便很多,但是使用Jquery將靈活很多。

3、效果:和方式一樣。

總結:本文非常的簡單,在asp.net mvc中實現了3中ajax的調用方式,實現了一個最簡單的留言板程序。推薦使用Jquery和Ajax Helper這兩種。Ajax Helper使用非常簡單,Jquery比較靈活。

更新:三種方式都實現了一個最簡單的留言板程序

參考:

ASP.NET MVC 2 In Action

Pro ASP.NET MVC 2 Framework, Second Edition

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

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

相關文章

爆款AR游戲如何打造?網易楊鵬以《悠夢》為例詳解前沿技術

本文來自網易云社區。 7月31日,2018云創大會游戲論壇在杭州國際博覽中心103B圓滿舉行。本場游戲論壇聚焦探討了可能對游戲行業發展有重大推動的新技術、新實踐,如AR、區塊鏈、安全、大數據等。 網易AR游戲生態合作負責人楊鵬表示,傳統游戲模式…

景深決定照相機什么特性_照相機光圈與景深的關系

展開全部「光圈」,光圈是一個用來控制光線透過鏡頭,進入機身636f70793231313335323631343130323136353331333264663664內感光面的光量的裝置,它通常是在鏡頭內。表達光圈大小我們是用f值。光圈f值鏡頭的焦距/鏡頭口徑的直徑從以上的公式可知要…

潤乾V4導出TXT時自定義分隔符

◆ 背景說明 報表中,導出text時,默認沒有分隔符;應用中對導出Text,希望能自定義分隔符。在tag中定義了 textDataSeparator屬性,讓用戶在導出Text時自定義分隔符,從而確保滿足應用…

Spark學習體會

在去年圖計算工作中,和公司里實習的博士生嘗試過Spark后,發現Spark比Hadoop在計算速度上后很大的提高。Spark的計算使用Scala語言編寫代碼,其中圖計算用到了GraphX。對Spark技術的學習已經非常重要。 最近半年多時間里,經常看…

fastadmin自定義按鈕不是ajax,Fastadmin 自定義按鈕實現審核功能

功能描述新增自定義審核按鈕,點擊審核按鈕后,按鈕變為取消審核按鈕,同理點擊取消審核按鈕后,按鈕變為審核按鈕實現功能如下圖微信圖片_20200827112914.png上代碼{field: operate, title: __(Operate), table: table, events: Tabl…

函數的命名空間以及作用域

轉載于:https://www.cnblogs.com/mpfei/p/9451208.html

python獲取路由器數據包pppoe_PPPoE協議***4:如何得到PPPoE服務器的mac地址

在局域網中,怎樣得到PPPoE服務器的mac地址是一件頭疼的事情,特別是在windows環境下;得到PPPoE服務器mac地址的實現方法有兩種:1.在windows下,我們運行wireshark軟件,可以得到所有進出網卡的數據包格式和內容…

使用vs自帶的性能診斷工具

visual studio是個強大的集成開發環境,內置了程序性能診斷工具。下面通過兩段代碼進行介紹。 static void Main( string[] args){Test1();Test2();Console.ReadKey();}protected static void Test1(){Stopwatch sp new Stopwatch();sp.Start();string str "&…

Avg_row_length是怎么計算的?

通過一下命令我們可以獲取表的使用情況: rootmysql 05:49:33>show table status like tbname\G 結果: *************************** 1. row ***************************Name: tbnameEngine: InnoDBVersion: 10Row_format: CompactRows: 3425Avg_row_…

1.用代碼演示String類中的以下方法的用法 (2018.08.09作業)

1 public class Test_001 {2 3 public static void main(String[] args) {4 String a "德瑪西亞!";5 String b "";6 String c "aBcDefG";7 String d " 123321 ";8 System.out.println…

【Java基礎】List迭代并修改時出現的ConcurrentModificationException問題

現在有一個需求,要遍歷一個List,假設List里面存儲的是String對象,然后該需求事判斷里面如果有某個對象,則添加一個新的對象進去。自然,我們得出下面的代碼: import java.util.ArrayList; import java.util.…

tp5框架原理詳解_TP5框架安全機制實例分析

本文實例講述了TP5框架安全機制。分享給大家供大家參考,具體如下:防止sql注入1、查詢條件盡量使用數組方式,具體如下:$wheres array();$wheres[account] $account;$wheres[password] $password;$User->where($wheres)->f…

碧藍航線8.20服務器維護,碧藍航線半人馬來襲 8.20更新公告

半人馬來襲!碧藍航線將于8月20日9:00~11:00對安卓、iOS全港區進行為期2小時的改造建設,維護后將開啟限時活動「盛夏的半人馬座」,一起來看看吧。一、內容新增1.開啟限時活動「盛夏的半人馬座」,活動時間8月20日維護后~8月30日&…

MySQL安裝與設置

下載zip,配置 1,系統變量添加:...\mysql-5.7.10-winx64,環境變量添加:%MYSQL_HOME%\bin 2,修改MySQL.ini basedir(同系統變量路徑) datadir(系統變量路徑\data) port 33…

后端把Long類型的數據傳給前端,前端可能會出現精度丟失的情況,以及解決方案...

后端把Long類型的數據傳給前端,前端可能會出現精度丟失的情況。例如:201511200001725439這樣一個Long類型的整數,傳給前端后會變成201511200001725440。 解決方法: 方法一:在后臺將這個Long類型的字段轉換成String類型…

傳奇服務端各文件用途說明

MirServer(服務器目錄)├DBServer(數據庫服務端)│ ├Connection│ ├FDB(人物數據庫,數據庫格式為傳奇自定義格式)│ ├Log(角色選擇服務端日志)│ ├!AddrTable.txt(IP地址配置)│ ├!IdList.txt(交費賬號列表,!Setup.exe中ServiceModeTRUE時起作用)│…

認證服務器協議,基于口令的客戶端/服務器認證協議

摘要:Identity authentication is the precondition for secure communication between the client and the server. Kim and Chung presented a mutual authentication scheme for client/server scene. The authors realized the mutual authentication with the …

印章仿制工具_仿制圖章工具怎么用

在日常生活中,有時候我們需要帳單表格上的文字,用PS的防制圖章工具,可以十分方便快捷的處理出來。我想最恨學霸的就是學渣了吧,因為他們每次考試成績都是科科滿分。是家長嘴里別人家的孩子。那么今天就教學渣一個神技能&#xff0…

java日期的運用(DateUtils工具類)

public static void main(String[] args) { Date now new Date(); SimpleDateFormat sd new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("------當前時間--------:" sd.format(now)); //年: 加、減操作 System.out.…

1、rbac權限組件-初識, 中間件校驗1

1、權限組件rbac 1、什么是權限 1 項目與應用 2 什么是權限? 一個包含正則表達式url就是一個權限 who what how ---------->True or Flase 2、版本1:用戶表與權限url表 對應關系 # 版本1UserInforname pwdpermissionmodels.manytomany(Permissi…