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中有这样一个方法:

        public   void Test(int i)
        {
            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 class student
    {
        public string sname { get; set; }
        public int ID { get; set; }
        public int Grade { get; set; }
    }

2:写一个根据学生ID查找学生信息的方法。这里注意下,这个方法的返回类型为JsonResult,它能够给客户端以json类型输出数据(MVC能够把目标对象转换成json格式),这个和平时常见的ActionResult有所区别。

代码

public JsonResult TestMVC(int i, int j)
        {
            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中。

$.getJSON('/Home/TestMVC',{i:1,j:2},
                function(data) {
                    $("#divStudent").html(data.sname);
                }
                );

分析:以上三步基本上就可以实现一般的ajax程序,如有不同,也只可能是程序写法问题,大体流程都差不多应该相同。这种写法已经非常简洁了,但还有可以提高的地方。

第一:开发人员需要拼接ajax请求的地址。本例中为Home/TestMVC
             第二:开发人员需要准备构建ajax方法使用的data参数。本例中为,{i:1,j:2}
       
      解决思路:让程序自动为我们完成上面两步。可以参考ajaxpro的实现原理,每个方法异步请求的方法上加一个自定义特性标签,编译器遇到自定义标签后,自动生成一些js方法,来让开发者前端调用更加方便。例如生成如下代码:i,j分别是异步请求方法的两个参数,callback为异步请求后的回调方法。

代码

   var HomeController = {
            TestMVC: function(i, j,callback)
                                                {
                                                     $.getJSON('/Home/TestMVC?id=&',{i:i, j:j}, callback);
                                                }
        }

我们可以这样调用:我们只需要输入相应参数,以及完成回调方法即可。是不是简单了点。下一篇来讲讲具体实现方法。

HomeController.TestMVC(j,j+1, function(data) {
             $("#divStudent").html(data.sname);
             });

作者:姜敏
出处:http://www.cnblogs.com/aspnet2008/

 

转载于:https://www.cnblogs.com/ASPNET2008/archive/2010/03/07/1680034.html

asp.net mvc(八)相关推荐

  1. 学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!...

    转自 学习ASP.NET MVC系列: 学习ASP.NET MVC(一)--我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)--我的第一个ASP.NET MVC 控制器 学习 ...

  2. asp.net mvc(九)

    这篇我来讲如何实现自定义特性ajax,以及如何自动生成客户端js.             第一:所谓的自定义特性,就是我们自己定义的一个特性标签,在.net中,就有一些这样的特性,例如 .net内置 ...

  3. 我要学ASP.NET MVC 3.0(八): MVC 3.0 传递和保存你的Model

    概述 在 ASP.NET MVC 框架中,模型(Model)是负责核心应用程序或业务逻辑的应用程序部件. 模型对象通常从诸如 SQL Server 之类的永久存储区(如数据库)中访问数据,并对该数据执 ...

  4. ASP.NET MVC 重点教程一周年版 第八回 Helper之演化 【转】

    凡事出现必有原因 就像Filter,它是为了解决在一类的Action之前或之后执行统一的代码而产生的. 而Helper则是为了方便View的开发而产生的. 下面我们来解决几个问题,来看看Helper是 ...

  5. ASP.NET MVC教程八:_ViewStart.cshtml

    一.引言 _ViewStart.cshtml是在ASP.NET MVC 3.0及更高版本以后出现的,用Razor模板引擎新建项目后,Views目录下面会出现一个这样的文件: 打开_ViewStart. ...

  6. ASP.NET MVC 重点教程一周年版 第八回 Helper之演化

    凡事出现必有原因 就像Filter,它是为了解决在一类的Action之前或之后执行统一的代码而产生的. 而Helper则是为了方便View的开发而产生的. 下面我们来解决几个问题,来看看Helper是 ...

  7. YbSoftwareFactory 代码生成插件【八】:基于JQuery EasyUI、Web Api的 ASP.NET MVC 代码生成插件...

    "YbRapidSolution for MVC"是 YbSoftwareFactory 最新的代码生成插件,可一键生成基于ASP.NET MVC的解决方案源代码.其生成的 Dem ...

  8. GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台

    在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...

  9. 详解Asp.net MVC DropDownLists

    来自网络: Asp.net MVC中的DropDownLists貌似会让一开始从Asp.net Forms转过来的程序员造成不少迷惑.这篇文章讲述了为了使用DropDownLists,你需要在Asp. ...

最新文章

  1. iphone 使用委托(delegate)在不同的窗口之间传递数据
  2. STL6大标准库的关系和作用
  3. 主创仅2人,题材是大型3D战争,这款游戏竟然“超逼真”?
  4. Android相关sdk使用
  5. IDEA和VS code设置默认换行符为LF
  6. JavaScript-面试 表单验证
  7. Paradigm 已对 NFT 艺术品铸造和收藏协议 ZORA 进行投资
  8. mysql8 距离计算_MySQL创建根据经纬度计算距离的函数
  9. 常用的富文本编辑器插件
  10. APK大小查看、定义、反编译、如何安装解压
  11. 联想i5安装JAVA_lenovo联想G410笔记本安装系统
  12. CBA离好生意还差几个NBA?
  13. php两个问号??表示什么意思
  14. nginx 在线一键安装
  15. html按钮扁平化,HTML5和CSS3扁平化风格博客教程的资源分享
  16. chrome浏览器 在线打开预览pdf文件,而不是下载文件。
  17. [XJTUSE 算法设计与分析] 第三章 动态规划 3.2 动态规划典型例题与解题思路(一)
  18. U盘和存储卡实际上可以轻松的创建隐藏分区制作PE启动盘
  19. 使用Inno Setup 6将exe文件打包成压缩包并设置压缩后自动生成桌面图标
  20. 百度网盘 网页版、pc版 都登陆不进去的解决方法

热门文章

  1. elemenetui 布局_2020 零基础到快速开发 Vue全家桶开发电商管理系统(Element-UI)主页布局开发-Go语言中文社区...
  2. h5 uniapp history模式下刷新页面404
  3. php yaf框架和icon,php中Yaf框架是什么?
  4. php抛出和捕获异常,关于php:捕获和重新抛出异常的最佳实践是什么?
  5. 发送get请求php,如何利用PHP发送GET请求
  6. php 删除相对应的id,PHP 在下面这个留言板代码中加入删除按钮,每一个删除按钮删除相对应一行数据,这怎么弄...
  7. linux云自动化运维,linux云自动化系统运维17(延时服务及定时服务)
  8. 学习笔记(05):MySQL数据库运维与管理-03-二进制日志配置管理演示
  9. myelclipse Servers视图报错
  10. springMVC后台验证信息不显示的原因初探