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.mzph.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…