中兴路由器做网站,网上给别人做网站,网站推广关键词,网站制作需要多少钱官网上篇文章Asp.net MVC使用Filter解除Session, Cookie等依赖介绍了如何使用Filter来解除对于Session, Cookie的依赖。其实这个也可以通过Model Binding来达到同样的效果。 什么是Model Binding? Model Binding的作用就是将Request请求中包含的散乱参数#xff0c;根… 上篇文章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. 转载于:https://www.cnblogs.com/webenh/p/7691744.html