Asp.net MVC使用Model Binding解除Session, Cookie等依赖
上篇文章"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等依赖相关推荐
- Asp.net MVC使用Filter解除Session, Cookie等依赖
本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应用场景. 同时针对MVC中的对于Session,Cookie等的依赖,如何使用Filter解依赖. 如果大家有 ...
- ASP.NET MVC传递Model到视图的多种方式之通用方式的使用
ASP.NET MVC传递Model到视图的多种方式总结--通用方式的使用 有多种方式可以将数据传递到视图,如下所示: ViewData ViewBag PartialView TempData Vi ...
- 窥探ASP.Net MVC底层原理 实现跨越Session的分布式TempData
Hi,guys!Long time no see! 1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时缓存数据或者页面之间传递消息.也 ...
- 《Pro ASP.NET MVC 3 Framework》学习笔记之五【依赖注入及ninject工具使用】
一,创建松耦合的组件 1."分解关注点"是MVC模式里面一个非常重要的特性.我们想要在应用程序里面创建的组件尽可能的独立,这样我们就能管理比较少的依赖关系.理想情况下,每个组件都是 ...
- 使用Filter跟踪Asp.net MVC页面加载(转)
转载地址:http://www.cnblogs.com/JustRun1983/p/4027929.html 最近,客户一直反馈系统使用慢,有时候能够指出具体是哪个页面,有时候又只是笼统地反馈慢.这种 ...
- Asp.net MVC Filter解析和实例说明
解析目录 一.Filter在MVC生命周期中的位置 二.Filter常见的应用场景 三.Filter的执行顺序 四.MVC中常见的对于Session, Cookie的依赖 五.使用Filter解除依赖 ...
- ASP.NET MVC 中解决Session,Cookie等依赖的方式
目录 介绍 使用Filter方式 Filter在MVC生命周期中的位置 Filter常见的应用场景 Filter的执行顺序 MVC中常见的对Session,Cookie的依赖 使用Filter解除依赖 ...
- [ASP.NET MVC 小牛之路]16 - Model 验证
上一篇博文 [ASP.NET MVC 小牛之路]15 - Model Binding 中讲了MVC在Model Binding过程中如何根据用户提交HTTP请求数据创建Model对象.在实际的项目中, ...
- ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidator
旨在为目标Action方法的执行绑定输入参数的Model绑定过程伴随着对Model的验证.借助相应的验证特性,我们可以直接以声明的方式在Model类型上定义验证规则,这些规则将会作为Model元数据的 ...
最新文章
- 《大厂算法面试题目与答案汇总,剑指offer等常考算法题思路,python代码》V1.0版...
- node 同步js代码-超越昨天的自己系列(5)
- C语言实现二叉树(附完整源码)
- 3d需要学linux_我的脑子—从核磁共振图像到3D打印
- Java程序员需要掌握哪些技能才能通过大公司的面试
- (转)数字格式化函数:Highcharts.numberFormat()
- ie不加载jre_详细讲解!从JVM直到类加载器
- 语言身高预测实验注意事项_?新预训练模型CodeBERT出世,编程语言和自然语言都不在话下...
- php对pdf关键字定位,如何在PDF文件中快速查找关键字
- java逐行读取文件_Java逐行读取文件
- 马斯克宣布退出OpenAI,全身心投入特斯拉与SpaceX
- FI-MM-CO T-CODE (中英文)
- 1009. Complement of Base 10 Integer*
- 计算机网络保密承诺书,保密承诺书集合5篇
- 统计推断-经典统计推断
- 数据库作业4——数据查询
- Web Service的使用
- bash入门脚本(未完善)
- Hashcat使用指南
- python设置折线图标题字体为宋体_python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)...