上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖。
其实这个也可以通过Model Binding来达到同样的效果。

什么是Model Binding?

Model Binding的作用就是将Request请求中包含的散乱参数,根据接受请求的Action方法的参数列表,自动智能地构建这些参数的过程。

问题分析

常见的对于Session依赖的代码:

public ActionResult Index()
{var user = Session[“UserAccuont”];//从Session中获取当前登录用户的信息//send emailvar email = user.Email;…………
}

我们期望将函数改造成:

public ActionResult Index(UserAccount sessionUser)
{//send emailvar email = sessionUser.Email;…………
}

让Index action方法不用在方法内访问Session, 从而解除对于Session的依赖。
如果MVC能够智能的构造参数sessionUser, 从session取的数据,就能够解决我们的问题了。这就需要我们的Model Binding出场了。

自定义Model Binding

继承接口IModelBinder, 实现BindModel方法。
这个UserAccountModelBinder的作用就是从Session中取得UserAccount.

public class UserAccountModelBinder : IModelBinder{public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext){if(controllerContext.HttpContext.Session["UserAccuont"] != null){return controllerContext.HttpContext.Session["UserAccuont"];}return null;}}

接下来,我们要为这个ModelBinder,添加到MVC的Model Binding设置中,使得它能够在MVC的生命周期中起作用。
在Global.asax.cs文件的Application_Start()方法中,添加UserAccountModelBinder

protected void Application_Start()
{………//凡是UserAccount类型的参数,都会使用UserAccountModelBinder来处理,也就是会从Session中取值ModelBinders.Binders.Add(typeof(UserAccount), new UserAccountModelBinder ());}

上面就是全部的Model Binding解决问题的过程,希望能够帮助大家更好地理解MVC中的Model Binding.

Asp.net MVC使用Model Binding解除Session, Cookie等依赖相关推荐

  1. Asp.net MVC使用Filter解除Session, Cookie等依赖

    本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应用场景. 同时针对MVC中的对于Session,Cookie等的依赖,如何使用Filter解依赖. 如果大家有 ...

  2. ASP.NET MVC传递Model到视图的多种方式之通用方式的使用

    ASP.NET MVC传递Model到视图的多种方式总结--通用方式的使用 有多种方式可以将数据传递到视图,如下所示: ViewData ViewBag PartialView TempData Vi ...

  3. 窥探ASP.Net MVC底层原理 实现跨越Session的分布式TempData

    Hi,guys!Long time no see! 1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时缓存数据或者页面之间传递消息.也 ...

  4. 《Pro ASP.NET MVC 3 Framework》学习笔记之五【依赖注入及ninject工具使用】

    一,创建松耦合的组件 1."分解关注点"是MVC模式里面一个非常重要的特性.我们想要在应用程序里面创建的组件尽可能的独立,这样我们就能管理比较少的依赖关系.理想情况下,每个组件都是 ...

  5. 使用Filter跟踪Asp.net MVC页面加载(转)

    转载地址:http://www.cnblogs.com/JustRun1983/p/4027929.html 最近,客户一直反馈系统使用慢,有时候能够指出具体是哪个页面,有时候又只是笼统地反馈慢.这种 ...

  6. Asp.net MVC Filter解析和实例说明

    解析目录 一.Filter在MVC生命周期中的位置 二.Filter常见的应用场景 三.Filter的执行顺序 四.MVC中常见的对于Session, Cookie的依赖 五.使用Filter解除依赖 ...

  7. ASP.NET MVC 中解决Session,Cookie等依赖的方式

    目录 介绍 使用Filter方式 Filter在MVC生命周期中的位置 Filter常见的应用场景 Filter的执行顺序 MVC中常见的对Session,Cookie的依赖 使用Filter解除依赖 ...

  8. [ASP.NET MVC 小牛之路]16 - Model 验证

    上一篇博文 [ASP.NET MVC 小牛之路]15 - Model Binding 中讲了MVC在Model Binding过程中如何根据用户提交HTTP请求数据创建Model对象.在实际的项目中, ...

  9. ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidator

    旨在为目标Action方法的执行绑定输入参数的Model绑定过程伴随着对Model的验证.借助相应的验证特性,我们可以直接以声明的方式在Model类型上定义验证规则,这些规则将会作为Model元数据的 ...

最新文章

  1. 《大厂算法面试题目与答案汇总,剑指offer等常考算法题思路,python代码》V1.0版...
  2. node 同步js代码-超越昨天的自己系列(5)
  3. C语言实现二叉树(附完整源码)
  4. 3d需要学linux_我的脑子—从核磁共振图像到3D打印
  5. Java程序员需要掌握哪些技能才能通过大公司的面试
  6. (转)数字格式化函数:Highcharts.numberFormat()
  7. ie不加载jre_详细讲解!从JVM直到类加载器
  8. 语言身高预测实验注意事项_?新预训练模型CodeBERT出世,编程语言和自然语言都不在话下...
  9. php对pdf关键字定位,如何在PDF文件中快速查找关键字
  10. java逐行读取文件_Java逐行读取文件
  11. 马斯克宣布退出OpenAI,全身心投入特斯拉与SpaceX
  12. FI-MM-CO T-CODE (中英文)
  13. 1009. Complement of Base 10 Integer*
  14. 计算机网络保密承诺书,保密承诺书集合5篇
  15. 统计推断-经典统计推断
  16. 数据库作业4——数据查询
  17. Web Service的使用
  18. bash入门脚本(未完善)
  19. Hashcat使用指南
  20. python设置折线图标题字体为宋体_python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)...

热门文章

  1. 在线python编程编译器-python在线编译器的简单原理及简单实现代码
  2. python是什么怎么用-什么是python items函数?怎么使用它?
  3. stm32跑python-简易数据采集分析流程.stm32+python
  4. python用于什么-python主要应用在哪些领域?
  5. opencv python全屏显示、置窗口大小和位置
  6. getopt和getopt_long的使用
  7. maven项目的pom.xml 标签的含义
  8. jmeter(十八)关联之XPath Extractor
  9. 开通域名绑定DDNS
  10. Maven学习(三) -- 仓库