html5中文学习网

您的位置: 首页 > 网络编程 > ASP.NET » 正文

Asp.net MVC使用Model Binding解除Session, Cookie等依赖_.NET教程_编程技术

[ ] 已经帮助:人解决问题

什么是Model Binding?

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

modelbindingvQsHTML5中文学习网 - HTML5先行者学习网

问题分析

常见的对于Session依赖的代码:vQsHTML5中文学习网 - HTML5先行者学习网

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

我们期望将函数改造成:

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

让Index action方法不用在方法内访问Session, 从而解除对于Session的依赖。

 如果MVC能够智能的构造参数sessionUser, 从session取的数据,就能够解决我们的问题了。这就需要我们的Model Binding出场了。vQsHTML5中文学习网 - HTML5先行者学习网

自定义Model Binding

继承接口IModelBinder, 实现BindModel方法。vQsHTML5中文学习网 - HTML5先行者学习网

这个UserAccountModelBinder的作用就是从Session中取得UserAccount.vQsHTML5中文学习网 - HTML5先行者学习网

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的生命周期中起作用。vQsHTML5中文学习网 - HTML5先行者学习网

在Global.asax.cs文件的Application_Start()方法中,添加UserAccountModelBindervQsHTML5中文学习网 - HTML5先行者学习网

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

上面就是全部的Model Binding解决问题的过程,希望能够帮助大家更好地理解MVC中的Model Binding.vQsHTML5中文学习网 - HTML5先行者学习网

vQsHTML5中文学习网 - HTML5先行者学习网
vQsHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助