asp.net mvc(八)
ASP.NET MVC正式版都已经出来很长时间了,但一直没有用它做具体项目,所以之前的学习记录仅限于自娱自乐。去年年底开始,赶上公司开始重构所有原来的老项目,技术正好选用了ASP.NET MVC,重构组的同事为我们开发人员更高效的利用MVC模式开发,整理出一些公共模块供开发人员调用,减少开发人员自我学习的成本。
从今天开始我会陆续把我认为的一些不错的技术分享给大家,同时由于都属于学习阶段,所以提供的方案并不一定有多优化,如有问题大家请多多指教。
这一篇,我来分享下MVC下如何快速开发ajax程序。
话说开发ajax程序非常简单,就算自己写ajax处理程序也不用花多少时间,相关内容可参考 写一个ajax程序就是如此简单 ,如果采用一些成熟的js框架,例如jquery,prototype 等,更加会事半功倍。在用传统的web form方式时,我们都需要创建一个aspx页面(或者ashx)以及后台代码来处理这些ajax请求,但有了MVC,我们就没有必要单独创建这样的文件了,因为ajax请求的方法可以和页面的controller类放在一起。不知道大家有没有用过ajaxpro,.net2.0时我网上搜的一个基于服务端的ajax实现方案。它能让开发者通过js直接异步调用页面后台代码,且调用的方法可以和页面类放在一起,一般是在需要调用的方法前加一个AjaxMothod的特性标签。单从开发员实现角度来说,非常方便,开发员并不用关心它的实现方法。
MVC有个特点,一般情况下一个页面文件都会对应一个Controller,类似于web form模式下的页面后台代码。Conntroller里面的每个公共方法(私有方法不行)都可以通过页面地址中访问,例如我们在HomeController中有这样一个方法:
{
System .Web .HttpContext .Current .Response .Write ("aaa"+i .ToString ());
}
我们可以在浏览器中输入/Home/Test?i=1,此时页面上就会输出我们想要的内容,这也是web form模式没有办法直接实现的。即然MVC能够直接调用Controller中的方法,也就是我们不用单独创建一些类来实现,这点和ajaxpro的功能有点相似。下面我们就来实现在asp.net mvc中应用ajax,当然我选用jquery做为js框架,熟悉jquery的朋友看起来就非常容易了。
1:创建一个学生类的集合,学生类结构如下:
{
public string sname { get; set; }
public int ID { get; set; }
public int Grade { get; set; }
}
2:写一个根据学生ID查找学生信息的方法。这里注意下,这个方法的返回类型为JsonResult,它能够给客户端以json类型输出数据(MVC能够把目标对象转换成json格式),这个和平时常见的ActionResult有所区别。
![](/assets/blank.gif)
![](/assets/blank.gif)
{
int I = 0;
List<student> list = new List<student>();
for (int k = 0; k < 10; k++)
{
student sd = new student() { sname = "aaa" + k.ToString() + j.ToString(), ID = k, Grade = k * 10 };
list.Add(sd);
}
var stu = (from m in list
where m.ID == i
select m
).FirstOrDefault();
JsonResult J = new JsonResult();
J.Data = stu;
return J;
}
3:客户端代码:从后台取得数据后,填充到div中。
function(data) {
$("#divStudent").html(data.sname);
}
);
分析:以上三步基本上就可以实现一般的ajax程序,如有不同,也只可能是程序写法问题,大体流程都差不多应该相同。这种写法已经非常简洁了,但还有可以提高的地方。
第一:开发人员需要拼接ajax请求的地址。本例中为Home/TestMVC
第二:开发人员需要准备构建ajax方法使用的data参数。本例中为,{i:1,j:2}
解决思路:让程序自动为我们完成上面两步。可以参考ajaxpro的实现原理,每个方法异步请求的方法上加一个自定义特性标签,编译器遇到自定义标签后,自动生成一些js方法,来让开发者前端调用更加方便。例如生成如下代码:i,j分别是异步请求方法的两个参数,callback为异步请求后的回调方法。
![](/assets/blank.gif)
![](/assets/blank.gif)
TestMVC: function(i, j,callback)
{
$.getJSON('/Home/TestMVC?id=&',{i:i, j:j}, callback);
}
}
我们可以这样调用:我们只需要输入相应参数,以及完成回调方法即可。是不是简单了点。下一篇来讲讲具体实现方法。
$("#divStudent").html(data.sname);
});
作者:姜敏
出处:http://www.cnblogs.com/aspnet2008/
转载于:https://www.cnblogs.com/ASPNET2008/archive/2010/03/07/1680034.html
asp.net mvc(八)相关推荐
- 学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!...
转自 学习ASP.NET MVC系列: 学习ASP.NET MVC(一)--我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)--我的第一个ASP.NET MVC 控制器 学习 ...
- asp.net mvc(九)
这篇我来讲如何实现自定义特性ajax,以及如何自动生成客户端js. 第一:所谓的自定义特性,就是我们自己定义的一个特性标签,在.net中,就有一些这样的特性,例如 .net内置 ...
- 我要学ASP.NET MVC 3.0(八): MVC 3.0 传递和保存你的Model
概述 在 ASP.NET MVC 框架中,模型(Model)是负责核心应用程序或业务逻辑的应用程序部件. 模型对象通常从诸如 SQL Server 之类的永久存储区(如数据库)中访问数据,并对该数据执 ...
- ASP.NET MVC 重点教程一周年版 第八回 Helper之演化 【转】
凡事出现必有原因 就像Filter,它是为了解决在一类的Action之前或之后执行统一的代码而产生的. 而Helper则是为了方便View的开发而产生的. 下面我们来解决几个问题,来看看Helper是 ...
- ASP.NET MVC教程八:_ViewStart.cshtml
一.引言 _ViewStart.cshtml是在ASP.NET MVC 3.0及更高版本以后出现的,用Razor模板引擎新建项目后,Views目录下面会出现一个这样的文件: 打开_ViewStart. ...
- ASP.NET MVC 重点教程一周年版 第八回 Helper之演化
凡事出现必有原因 就像Filter,它是为了解决在一类的Action之前或之后执行统一的代码而产生的. 而Helper则是为了方便View的开发而产生的. 下面我们来解决几个问题,来看看Helper是 ...
- YbSoftwareFactory 代码生成插件【八】:基于JQuery EasyUI、Web Api的 ASP.NET MVC 代码生成插件...
"YbRapidSolution for MVC"是 YbSoftwareFactory 最新的代码生成插件,可一键生成基于ASP.NET MVC的解决方案源代码.其生成的 Dem ...
- GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台
在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...
- 详解Asp.net MVC DropDownLists
来自网络: Asp.net MVC中的DropDownLists貌似会让一开始从Asp.net Forms转过来的程序员造成不少迷惑.这篇文章讲述了为了使用DropDownLists,你需要在Asp. ...
最新文章
- 土地档案管理系统需求分析
- cocos2d-x 3.1.1 学习笔记[15] Shader 著色器
- 简单谈谈js中的MVC
- 动态污点分析隐式流--动静结合的解决方法
- delegate、notification、KVO各优缺点
- C#: switch语句的重构『网摘』
- Linux slab分配器【转】
- 最全的Vim操作快捷键
- 非线性光学近似计算机应用,浅谈非线性光学的发展及应用
- 苹果产品介绍合集(加广告语和官方介绍)第二版--由Apple_VM_Xiaoqie整理(微信,抖音同号)
- CPS基本概念(信息物理融合系统)------1
- c#之toolstrip_toolstripcontainer_TopToolStripPanel
- 搭建直播平台源码用到的云技术到底是什么
- 分享 9 条消除 if...else 的锦囊妙计
- C语言学习C程序设计——变量(详解)
- 小米扫地机器人充电座指示灯不亮_小米扫地机器人充电多久可以用 怎么充电?...
- ssm+java+vue微信小程序的驾校预约管理系统#毕业设计
- pd电源测试-PD电源自动测试系统ATECLOUD-Power
- 前端-01-编写简单的导航栏
- 野火霸道STM32开发板点亮LED灯课后作业
热门文章
- python 仪表盘 ppt_Python强大的pyecharts绘画优美图形lt;三gt;
- android 字体切换快捷键,Android stdio 字体设置及快捷键
- java steam 排序_Java使用Steams VS TreeMap对地图进行排序
- 如何获取登录token值_Token认证,如何快速方便获取用户信息
- linux 常见命令 cp,Linux 常用命令之cp,一个可以煮饭的工具;
- linux网络配置出现E325,Linux CentOS E325错误,如何解决?VI如何使用?
- php 百度收录api_帝国cms百度普通收录资源提交API推送php实例方法
- java md5 utf-8_Jquery与java MD5加密不同
- js 禁止android手机返回键,js禁止浏览器,微信,及手机物理键的返回
- java thread 输出结果_大神来看看这段程序输出结果是什么?