在商城网站中,用户中心的每个页面都要几乎都要涉及对用户是否登录的判断,为了减少代码重写,可采用切片编程

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace MvcWeb.Public
{
public class IsLoginCheckAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string returnUrl = filterContext.RequestContext.HttpContext.Request.Path;
HttpCookie cookie = filterContext.RequestContext.HttpContext.Request.Cookies[SystemConfig.UserId];
int uid = cookie== null ? : Convert.ToInt32(cookie.Value);
if (uid == )
{
filterContext.Result = new RedirectToRouteResult("Default", new System.Web.Routing.RouteValueDictionary(
new { controller = "user", action = "login", returnurl = returnUrl })
);
}
else
{
base.OnActionExecuting(filterContext);
}
}
} public class IsShopLoginCheckAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string returnUrl = filterContext.RequestContext.HttpContext.Request.Path;
HttpCookie shopCookie = filterContext.RequestContext.HttpContext.Request.Cookies[SystemConfig.ShopID];
int shopid = shopCookie == null ? : Convert.ToInt32(shopCookie.Value);
if (shopid == )
{
HttpCookie cookie = filterContext.RequestContext.HttpContext.Request.Cookies[SystemConfig.UserId];
int uid = cookie == null ? : Convert.ToInt32(cookie.Value);
if (uid == )
{
filterContext.Result = new RedirectToRouteResult("Default", new System.Web.Routing.RouteValueDictionary(
new { controller = "shop", action = "login", returnurl = returnUrl })
);
}
else
{
#region 店铺信息
Dictionary<string, object> param = new Dictionary<string, object>();
param.Add("uid", uid);
string shopurl = RouteManager.GetApiRoute("Shop", "SingleShopByUID", param);
DDGW.VIEWMODEL.Shops shop = Newtonsoft.Json.JsonConvert.DeserializeObject<DDGW.VIEWMODEL.Shops>(Business.Basic.Shop.ShopList.PostShop(shopurl));
#endregion
if (shop.ShopsID > )
{
shopCookie = new HttpCookie(SystemConfig.ShopID, shop.ShopsID.ToString());
filterContext.RequestContext.HttpContext.Response.SetCookie(shopCookie);
base.OnActionExecuting(filterContext);
}
else
{
filterContext.Result = new RedirectToRouteResult("Default", new System.Web.Routing.RouteValueDictionary(
new { controller = "shop", action = "login", returnurl = returnUrl })
);
}
}
}
else {
base.OnActionExecuting(filterContext);
}
}
}
}

使用时:

        [HttpGet]
[IsLoginCheck]
public ActionResult Comment(int uid)
{
IList<SubOrders> noComments = new List<SubOrders>();
#region 用户未评价子订单
noComments = UserList.Instance.NoCommentOrders(uid);
#endregion
this.ViewBag.no = noComments;
this.ViewBag.uid = uid;
return View();
}

MVC切片编程的更多相关文章

  1. MVC高级编程+C#高级编程

    本人今年的目标是学习MVC高级编程和C#高级编程,把自己的基础打的扎实,本文中值是一个开到,定期会在上面记录学习的技术点和心得就,加油吧!!!!!

  2. MVC高级编程-目录

    MVC高级编程 ================================================== 控制器 视图 模型 表单和HTML辅助方法 数据注解和验证 成员资格.授权和安全性 ...

  3. Spring:面向切片编程

    在之前我们记录Spring的随笔当中,都是记录的Spring如何对对象进行注入,如何对对象的属性值进行注入,即我们讲解的很大部分都是Spring的其中一个核心概念——依赖注入(或者说是控制翻转,IOC ...

  4. MVC模式编程演示样本-登录认证(静态)

    好,部分博客分享我的总结JSP-Servlet-JavaBean思想认识和三层编程模型的基本流程,ZH- CNMVC该示例实现演示的编程模式-登录身份验证过程,在这里,我仍在使用静态验证usernam ...

  5. javaWeb中MVC的编程思想示例

    没有学习MVC之前我只写了一个Servlet类(Note_List.java),分层之后,我将这个类分成了5个类(NoteDao.java,,NoteDaoImpl.java,,NoteService ...

  6. .Net Mvc 异步编程

    关于在mvc/webapi 中 async/await 异步编程的探究和整理 你可以用双手玩转多个球 查看调试器windbg和sos.dll调试器扩展或挖掘W3SVC日志 设置minWorkerThr ...

  7. springboot---aop切片编程

    1.介绍 面向切面编程,关注点代码与业务代码分离,就是给指定方法执行前执行后..插入重复代码 关注点:重复代码 切面:被切面的类 切入点:执行目标对象方法,动态植入切片代码 2.部署步骤 2.1:添加 ...

  8. MVC模式编程演示样例-登录验证(静态)

    好,上篇博客分享了本人总结的JSP-Servlet-JavaBean三层架构编程模式的实现思想和基本流程,接下来给大家分享一个MVC编程模式的实现演示样例-登录验证的过程,这里我仍然用的是静态的验证u ...

  9. Spring MVC 函数式编程进阶

    1. 前言 上一篇对 Spring MVC 的函数式接口编程进行了简单入门,让很多不知道的同学见识了这种新操作.也有反应这种看起来没有传统写法顺眼,其实大家都一样.但是我们还是要敢于尝试新事物.Jav ...

随机推荐

  1. windwos下安装nginx(转)

    1.windows下安装Nginx1.1 从nginx官网下载相应的安装包:http://nginx.org/  1.2 建议下载  下载稳定版 1.3 解压到相应的目录,比如我是e盘 然后修改目录名 ...

  2. [SinGuLaRiTy] NOIP模拟赛(TSY)-Day 1

    [SinGuLaRiTy-1032] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved.                              ...

  3. Python之‘数据结构’

    简介 数据结构基本上就是--它们是可以处理一些数据的结构.或者说,它们是用来存储一组相关数据的.在Python里面有三种内建的数据结构--列表.元组和字典. 一.列表 list是处理一组有序项目的数据 ...

  4. 通过div实现arcgis自定义infowindow

    通过给地图绑定缩放,单击和平移命令,实现在地图附加div标签,实现infowindow效果: /* *作者 扰扰 *自定义esri弹窗 *paramter Map地图对象 *paramter x *p ...

  5. ZOJ-Little Sub and Pascal's Triangle(思维规律)

    Little Sub is about to take a math exam at school. As he is very confident, he believes there is no ...

  6. D - Frogger

    Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sit ...

  7. sqlserver 服务器监控

    1.表锁 查看被锁的表:select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from ...

  8. python3 enumerate()函数笔记

    d={"A":"a","B":"b","C":"c","D" ...

  9. Vue.js递归组件实现动态树形菜单

    使用Vue递归组件实现动态菜单 现在很多项目的菜单都是动态生成的,之前自己做项目也是遇到这种需求,翻看了官网案例,和网上大神的案例.只有两个感觉,官网的案例太简洁,没有什么注释,看起来不太好理解,大神 ...

  10. ssis error at other ssis.pipeline "ole db destination" failed validation and returned validation status

    我在修改一个ssis的包,发现这个destination的表被改过了.所以就重建了表.就导致了这个错误. 打开包重新检查下表结构的匹配就好了