Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 6 ----asp.net MVC+Extjs

现在mvc采用了ModelBinder, Controller中现在可以接受很多复杂类型的参数,但是对于jquery,extjs等js框架来说,更多的是采用json格式与服务器端传递参数更合理.对于简单的参数,我们可以并不采用json格式,直接post到服务器端.比如用户登陆,我们只传递用户名和密码到Controller中:

handler : function CheckLogin() {
 if (form.isValid()) {
   var formvalue = form.getValues();
   Ext.Ajax.request({
     url : '/user.mvc/login',
     method : "POST",
     waitMsg : "请等待!",
     params : {
      userid : formvalue.UserID,
      password : formvalue.UserPassword
     },
   success : function(response, options) {
     var responseMessage = Ext.util.JSON
                       .decode(response.responseText);
     if (responseMessage.Result) {
       win.destroy();
       window.location = "/Home.mvc/Index";
     } else {
        Ext.MessageBox.alert("消息",
        responseMessage.Message);
     }
   },
   failure : function(response, options) {
    Ext.MessageBox.hide();
      Ext.MessageBox.show({
        title :"登陆失败",
        msg : response.responseText
      });
    }
   });
 } else {
     form.markInvalid();
     Ext.MessageBox.alert("消息", "输入错误");
 }
}

可以看到,对于userid和password的值,并没有采用Ext.util.JSON .encode加密成json格式字符串.这对应于我们上次的UserController中的Login.但是对于传输实体,也就是添加用户和更新用户的操作时,就不会那么容易了:

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult AddUser(UserDTO User){.....}

一种方式,我们可以采用post的方式传输User.UserName,User.UserID这种前缀+属性作为key的方式到Controller中,MVC通过DefaultModelBinder就可以将值

映射到实体参数中,但是这种方式就需要我们修改form的控件的name.另外一种方式就是我们实现IModelBinder,添加JsonModelBinder,使前台js框架传递json对象

到Controller中解析到参数中,暂且我们只做以下简单实现:

public class JsonBinder<T> : IModelBinder
  {
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
      var param = new DataContractJsonSerializer(typeof(T))
        .ReadObject(controllerContext.HttpContext.Request.InputStream);
      return param;
    }
  }

时间: 2024-09-19 02:03:19

Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 6 ----asp.net MVC+Extjs的相关文章

Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 5 ----asp.net MVC+Extjs

在前面的系列中,我们已经完成了数据库设计,数据访问和业务逻辑,接下来我们来完成前台MVC和Extjs界面部分. 在这段时间里,spring.net已经发布了1.2版本,asp.net mvc也更新到了RC1 Refresh.nhibernate更新到了2.0.整个Demo程序也做了相应的更新. 整个架构由asp.net mvc把后台的业务和前台界面联系起来,在Controller中调用业务逻辑完成前台的调用,完成相应的视图转发等工作.这样存在两个问题: Controller怎么调用业务逻辑? 最

ASP.NET MVC Framework 系列

序言 做为设计模式的王者,MVC在众多领域都成为良好的模型的代名词,从前在ASP.NET下我们只能依靠Monorail来实现ASP.NET下无控件的MVC,但是现在ASP.NET 下的MVC已经成为现实. 本文只想让大家更直观地认知ASP.NET MVC,如果语言有所不当,还望大家海涵.当然,如果文中有所纰漏还希望大家及时指出,我也好做及时的修改.在下本着对初学者负责的态度来书写本系列中的各篇文章,但期间的恒心与毅力相信过来的人更加明白,所以如果书写有误希望大家谅解. ASP.NET MVC 正

[转]Asp.net Mvc Framework 系列

  from:http://www.cnblogs.com/chsword/archive/2008/03/10/1099474.html 做为设计模式的王者,MVC在众多领域都成为良好的模型的代名词,前日我们只能靠Monorail来实现Asp.net的Mvc的而且确Asp.netMvc已经成为现实 本文只想让大家更直观地认知Asp.net Mvc,如果语言有所不当,还望先贤海涵,当然,如果文中有所纰漏还希望大家指出 尽量本着对初学者负责的态度来写,但期间的恒心与毅力相信过来的人更加明白,所以如

解读ASP.NET 5 &amp; MVC6系列(3):项目发布与部署

原文:解读ASP.NET 5 & MVC6系列(3):项目发布与部署 本章我们将讲解ASP.NET5项目发布部署相关的内容,示例项目以我们前一章创建的BookStore项目为例. 发布前的设置 由于新版ASP.NET5支持多版本DNX运行环境的发布和部署,所以在部署之前,我们需要设定部署的目标DNX(即之前的KRE). 步骤:右键BookStore项目->属性->Application选项卡,选择DNX的版本,本例中,选择dnx-coreclr-win-x64.1.0.0-beta4.

QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)

QBlog简介: QBlog:是一个套博客系统,开源.支持多用户.多语言.及方便的多数据库切换. QBlog下载:http://www.cyqdata.com/download/article-detail-427 QBlog演示:你点击下载所看到秋色园,就是QBlog的进化版本. 掌握QBlog原理及开发的意义?  QBlog是能帮助你真正意义的掌握ASP.NET开发的一套系统. 它没有WebForm,没有MVC,它让你明白,ASP.NET本质并没有控件的概念.   你应该知道,也许你已经知道

解读ASP.NET 5 &amp; MVC6系列(2):初识项目

原文:解读ASP.NET 5 & MVC6系列(2):初识项目 初识项目 打开VS2015,创建Web项目,选择ASP.NET Web Application,在弹出的窗口里选择ASP.NET 5 Website模板创建项目,图示如下: 我们可以看到,此时Web Forms\MVC\Web API复选框都选择不了,原有是因为在ASP.NET 5中做了大量更改,移除了Web Forms功能,将MVC.Web API.Web Pages这些功能合在了一起,所以自然就不需要这些复选框了.另外由于是CT

解读ASP.NET 5 &amp; MVC6系列(11):Routing路由

原文:解读ASP.NET 5 & MVC6系列(11):Routing路由 新版Routing功能介绍 在ASP.NET 5和MVC6中,Routing功能被全部重写了,虽然用法有些类似,但和之前的Routing原理完全不太一样了,该Routing框架不仅可以支持MVC和Web API,还支持一般的ASP.NET5程序.新版的改变有如下几个部分. 首先,Routing系统是基于ASP.NET 5的,是一个独立于MVC的路由框架,而不是基于MVC的.MVC只是在上面扩展了一个快捷方式而已. 其次,

解读ASP.NET 5 &amp; MVC6系列(12):基于Lamda表达式的强类型Routing实现

原文:解读ASP.NET 5 & MVC6系列(12):基于Lamda表达式的强类型Routing实现 前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特性(Route和HttpXXX系列方法)来定义.本章,我们将讲述一种基于Lambda表达式的强类型类型. 这种方式的基本使用示例如下: services.Configure<MvcOptions>(opt => { opt.EnableTy

解读ASP.NET 5 &amp; MVC6系列(7):依赖注入

原文:解读ASP.NET 5 & MVC6系列(7):依赖注入 在前面的章节(Middleware章节)中,我们提到了依赖注入功能(Dependency Injection),ASP.NET 5正式将依赖注入进行了全功能的实现,以便开发人员能够开发更具弹性的组件程序,MVC6也利用了依赖注入的功能重新对Controller和View的服务注入功能进行了重新设计:未来的依赖注入功能还可能提供更多的API,所有如果还没有开始接触依赖注入的话,就得好好学一下了. 在之前版本的依赖注入功能里,依赖注入的