MVC切片编程
在商城网站中,用户中心的每个页面都要几乎都要涉及对用户是否登录的判断,为了减少代码重写,可采用切片编程
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切片编程的更多相关文章
- MVC高级编程+C#高级编程
本人今年的目标是学习MVC高级编程和C#高级编程,把自己的基础打的扎实,本文中值是一个开到,定期会在上面记录学习的技术点和心得就,加油吧!!!!!
- MVC高级编程-目录
MVC高级编程 ================================================== 控制器 视图 模型 表单和HTML辅助方法 数据注解和验证 成员资格.授权和安全性 ...
- Spring:面向切片编程
在之前我们记录Spring的随笔当中,都是记录的Spring如何对对象进行注入,如何对对象的属性值进行注入,即我们讲解的很大部分都是Spring的其中一个核心概念——依赖注入(或者说是控制翻转,IOC ...
- MVC模式编程演示样本-登录认证(静态)
好,部分博客分享我的总结JSP-Servlet-JavaBean思想认识和三层编程模型的基本流程,ZH- CNMVC该示例实现演示的编程模式-登录身份验证过程,在这里,我仍在使用静态验证usernam ...
- javaWeb中MVC的编程思想示例
没有学习MVC之前我只写了一个Servlet类(Note_List.java),分层之后,我将这个类分成了5个类(NoteDao.java,,NoteDaoImpl.java,,NoteService ...
- .Net Mvc 异步编程
关于在mvc/webapi 中 async/await 异步编程的探究和整理 你可以用双手玩转多个球 查看调试器windbg和sos.dll调试器扩展或挖掘W3SVC日志 设置minWorkerThr ...
- springboot---aop切片编程
1.介绍 面向切面编程,关注点代码与业务代码分离,就是给指定方法执行前执行后..插入重复代码 关注点:重复代码 切面:被切面的类 切入点:执行目标对象方法,动态植入切片代码 2.部署步骤 2.1:添加 ...
- MVC模式编程演示样例-登录验证(静态)
好,上篇博客分享了本人总结的JSP-Servlet-JavaBean三层架构编程模式的实现思想和基本流程,接下来给大家分享一个MVC编程模式的实现演示样例-登录验证的过程,这里我仍然用的是静态的验证u ...
- Spring MVC 函数式编程进阶
1. 前言 上一篇对 Spring MVC 的函数式接口编程进行了简单入门,让很多不知道的同学见识了这种新操作.也有反应这种看起来没有传统写法顺眼,其实大家都一样.但是我们还是要敢于尝试新事物.Jav ...
随机推荐
- SP263 PERIOD - Period KMP技巧
\(\color{#0066ff}{题目描述}\) 如果一个字符串S是由一个字符串T重复K次形成的,则称T是S的循环元.使K最大的字符串T称为S的最小循环元,此时的K称为最大循环次数. 现给一个给定长 ...
- 添加fping监控
第一步:安装fping服务 yum -y install fping 第二步:在zabbix-server服务端上启用fping服务 重启zabbix-server 第三步:在主机上添加fping监控 ...
- DesiredCapabilities内容详解--Appium服务关键字
上次了解了一些DesiredCapabilities的用法,有些还是不太清楚,去appium官网找了找官方文档,觉得写的很全: ## Appium 服务关键字 <expand_table> ...
- php 安装扩展库
liunx系统 1. /usr/local/php/bin/php-config php 配置文件位置 [ php-config是一个脚本文件,用于获取所安装的php配置的信息 ] 在编译扩展时,如果 ...
- C语言中函数声明、形参、实参
函数原型: 原型prototype是函数的声明:描述了函数的返回值与参数: 函数原型说明了两点: 1.该函数的返回值 2.该函数的参数及其类型 ++++++++++++++++++++++++++++ ...
- C#面试题-递归
有一组数1.1.2.3.5.8.13.21.34...,求第n个数是多少? public int Recursion (int n){ ){ ; } &&n<=){ ; } )+ ...
- Sharepoint 页面超链接地址打开
SharePoint页面: http://test:81/pages/nihao.aspx 页面超链接:<a href="www.baidu.com" >百度</ ...
- CodeForces - 476B -Dreamoon and WiFi(DFS+概率思维)
Dreamoon is standing at the position 0 on a number line. Drazil is sending a list of commands throug ...
- P2896 [USACO08FEB]一起吃饭Eating Together
传送门 可以考虑DP 设 f [ i ] [ 1/2/3 ] [ 0/1 ] 表示当前考虑到第 i 头牛,打算让当前位置的编号变成 1/2/3,并且打算让整段序列上升/下降 0/1 然后就对每种情况慢 ...
- 求用1g、2g、3g的砝码(每种砝码有无穷多个)称出10g的方案有几种
#include <iostream> using namespace std; // ; // sup是保存多项式的数组,sup[n]中的值代表指数为i的系数 ,下标i是x的指数 // ...