asp.net-mvc – 如何根据用户过滤MVC 4中的结果
我有自定义身份验证,当用户登录时,我在Session / Cache上保留必要的信息…
所以,我有一些DropDowns的视图必须显示按用户ID过滤的数据… 1 – 直接在控制器上? ... Model.MyList = repository.GetAll().Where(x => x.User.Id == userId); return View(Model); 2 – 创建动作过滤器(如何在不查询来自DB的不必要数据的情况下执行此操作) 3 – 其他方式? 1的问题是我有几个具有相同下拉列表的视图,因此我将不得不重复相同的代码. 解决方法
方法 – 1
功能 private void userInfo(ResultExecutingContext filtercontext) { if (filtercontext.Controller.TempData[userId.ToString()] == null) filtercontext.Controller.ViewBag.userId = filtercontext.Controller.TempData[userId.ToString()] = repository.GetAll().Where(x => x.Id == userId); else //This will load the data from TempData. So,no need to //hit DataBase. filtercontext.Controller.ViewBag.userId = filtercontext.Controller.TempData[userId.ToString()]; TempData.Keep(); // This will save your Database hit. } 过滤方法 public class MyActionFilter : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filtercontext) { //Call the Action Method before executing the View and after //executing the Action. userInfo(filtercontext); base.OnResultExecuting(filtercontext); } } 控制器动作方法 [MyActionFilter] //Whenever Action Method will execute. We will check TempData contains //Data or not. public ActionResult Index() { return View(); } 关于TempData和TempData.Keep()的要点 > TempData中的项目只有在读取后才会被标记为删除. 您也可以使用会话变量,唯一的主要问题是会话变量与TempData相比非常繁重.最后,您还可以跨控制器/区域保持数据. TempData也适用于新的Tabs / Windows,就像Session变量一样. 方法 – 2 您可以在某个变量中缓存数据,并可以再次重复使用.以与TempData相同的方式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 在ASP.Net MVC视图中显示/隐藏链接
- asp.net-mvc – asp.net mvc排除来自搜索引擎抓取的动作
- ASP.NET MVC 6和ASP.NET Core 1.0之间有什么区别以及核心框
- asp.net – “Aspnetdb”数据库中的所有表用于什么?
- asp.net-mvc – 如何在MVC4中显示Byte []作为图片
- asp.net-web-api – MaxExpansionDepth,带有最新的webapi和
- asp.net文件上传示例分享
- asp.net – 在MVC5应用程序中使用OWIN软件包的好处
- asp.net – “用户首选项”数据库表设计
- asp.net-core-mvc – 在第二级包含几个引用
- asp.net-mvc – 不使用DropDownList和嵌套对象的
- asp.net-mvc – 从扩展Apicontroller的MVC控制器
- asp.net – InvalidOperationException:在程序集
- 如何在ASP.NET中用C#编程设置(使用GET SET属性)“
- .NET授权.订单或允许和拒绝元素是否重要?
- asp.net-mvc-3 – 将数组传递给RouteValues,并将
- asp.net-mvc – ASP.NET MVC 3:RouteExistingFi
- asp.net – Request.IsAuthenticated总是如此.我
- asp.net – 我的URL中的这些随机字符是什么?它们
- .net – 修改MVC 5中的密码长度