当前位置: 首页 > news >正文

含关键词的网站建设wangye

含关键词的网站建设,wangye,宿迁房产网官方网站,网页制作手机软件下载MVC Filter是典型的AOP#xff08;面向切面编程#xff09;应用#xff0c;在ASP.NET MVC中的4个过滤器类型#xff0c;如下#xff1a; 但是默认实现它们的过滤器只有三种#xff0c;分别是ActionFilter#xff08;方法#xff09;#xff0c;Authorize#xff08;授…MVC Filter是典型的AOP面向切面编程应用在ASP.NET MVC中的4个过滤器类型如下 但是默认实现它们的过滤器只有三种分别是ActionFilter方法Authorize授权HandleError错误处理。 特性Attribute是用于在运行时传递程序中各种元素比如类、方法、结构、枚举、组件等的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号[ ]来描述的。特性Attribute用于添加元数据如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性预定义特性和自定义特性 Filter的默认实现方式就是带有Attribute后缀的有了Attribute我们就可以将我们的Filter像标签一样的贴在方法或者控制器的上方 Web Api:   System.Web.Http.Filters.ActionFilterAttribute 继承该类 OnActionExecuting  执行前OnActionExecuted   执行后OnResultExecuting  返回前OnResultExecuted   返回后 Mvc:   System.Web.Mvc.ActionFilterAttribute  继承该类 OnActionExecuting  执行前  OnActionExecutingAsync  执行前(异步)OnActionExecuted   执行后  OnActionExecutedAsync   执行后(异步) 1、Action过滤器在ASP.NET MVC中创建MvcApp项目创建文件夹Filter然后新建类MyActionFilterAttribute为了遵循默认的约定名称以Attribute结尾继承自ActionFilterAttribute类。ActionFilterAttribute类有如下4个方法。 using System;namespace System.Web.Mvc {[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited true, AllowMultiple false)]public abstract class ActionFilterAttribute : FilterAttribute, IActionFilter, IResultFilter{protected ActionFilterAttribute();public virtual void OnActionExecuted(ActionExecutedContext filterContext);public virtual void OnActionExecuting(ActionExecutingContext filterContext);public virtual void OnResultExecuted(ResultExecutedContext filterContext);public virtual void OnResultExecuting(ResultExecutingContext filterContext);} } 实现MyActionFilterAttribute类 using System; using System.Web.Mvc;namespace MvcApp.Filter {public class MyActionFilterAttribute : ActionFilterAttribute{public override void OnActionExecuting(ActionExecutingContext filterContext){//1、获取请求的类名和方法名string strController filterContext.RouteData.Values[controller].ToString();string strAction filterContext.RouteData.Values[action].ToString();//2、用另一种方式获取请求的类名和方法名string strController2 filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;string strAction2 filterContext.ActionDescriptor.ActionName;filterContext.HttpContext.Response.Write(控制器 strController br/);filterContext.HttpContext.Response.Write(控制器 strController2 br/);filterContext.HttpContext.Response.Write(Action strAction br/);filterContext.HttpContext.Response.Write(Action strAction2 br/);filterContext.HttpContext.Response.Write(Action执行前 DateTime.Now.ToString(yyyy-MM-dd hh:mm:ss fff) br/);base.OnActionExecuting(filterContext);}public override void OnActionExecuted(ActionExecutedContext filterContext){filterContext.HttpContext.Response.Write(Action执行后 DateTime.Now.ToString(yyyy-MM-dd hh:mm:ss fff) br/);base.OnActionExecuted(filterContext);}} } 对于过滤器我们可以把它们加在3个地方一个是控制器上面控制器下面的所有Action一个是Action上面指定标识的Action另一个就是全局位置所有控制器中的Action。这里只演示在Action上面和Home控制器中 [MyActionFilter] public ActionResult Index() {return View(); } 2、Result过滤器 新建MyResultFilterAttribute类继承ActionFilterAttribute using System; using System.Web.Mvc;namespace MvcApp.Filter {public class MyResultFilterAttribute : ActionFilterAttribute{/// summary/// 加载“视图”前执行/// /summary/// param namefilterContext/parampublic override void OnResultExecuting(ResultExecutingContext filterContext){filterContext.HttpContext.Response.Write(加载视图前执行 OnResultExecuting DateTime.Now.ToString(yyyy-MM-dd hh:mm:ss fff) br/);base.OnResultExecuting(filterContext);}/// summary/// 加载“视图”后执行/// /summary/// param namefilterContext/parampublic override void OnResultExecuted(ResultExecutedContext filterContext){filterContext.HttpContext.Response.Write(加载视图后执行 OnResultExecuted DateTime.Now.ToString(yyyy-MM-dd hh:mm:ss fff) br/);base.OnResultExecuted(filterContext);}} } 这里把MyResultFilter过滤器加在控制器上面相当于给Home控制器中的所有的Action方法添加了MyResultFilter过滤器。 using MvcApp.Filter; using System.Web.Mvc;namespace MvcApp.Controllers {[MyResultFilter]public class HomeController : Controller{[MyActionFilter]public ActionResult Index(){return View();}} } 3、AuthorizeAttribute过滤器 创建MyAuthorizeAttribute类继承AuthorizeAttribute类 using System.Web.Mvc;namespace MvcApp.Filter {/// summary/// 授权过滤器/// /summarypublic class MyAuthorizeAttribute : AuthorizeAttribute{public override void OnAuthorization(AuthorizationContext filterContext){filterContext.HttpContext.Response.Write(OnAuthorizationbr/);//注释掉父类方法因为父类里的OnAuthorization方法会调用ASP.NET的授权验证机制//base.OnAuthorization(filterContext);}} } 在控制器Home中的Index上添加MyAuthorize过滤器 [MyAuthorize] [MyActionFilter] public ActionResult Index() {return View(); } 通常Authorize过滤器也是在全局过滤器上面的主要用来做登录验证或者权限验证在App_Start目录下的FilterConfig类的RegisterGlobalFilters方法中添加 public class FilterConfig {public static void RegisterGlobalFilters(GlobalFilterCollection filters){//filters.Add(new HandleErrorAttribute());//添加全局授权过滤器filters.Add(new MyAuthorizeAttribute());} } 在全局中注册过滤器则所有控制器的所有行为Action都会执行这个过滤器。 运行结果如下图 4、Exception过滤器 创建MyHandleErrorAttribute类继承HandleErrorAttribute类 using System; using System.Web.Mvc;namespace MvcApp.Filter {/// summary/// 异常处理过滤器/// /summarypublic class MyHandleErrorAttribute : HandleErrorAttribute{public override void OnException(ExceptionContext filterContext){ //1、获取异常对象Exception ex filterContext.Exception;//2、记录异常日志//3、重定向友好页面filterContext.Result new RedirectResult(~/error.html);//4、标记异常已经处理完毕filterContext.ExceptionHandled true;base.OnException(filterContext);}} } 在Action上面添加MyHandleError过滤器 [MyHandleError] public ActionResult GetErr() {int a 0;int b 1 / a;return View(); } 创建异常错误友好提示页面error.html。 body自定义错误页面 /body 运行会自动跳转到error.html页面。 如果页面没有跳转就需要去Web.config配置文件中的system.web节点下面添加如下配置节点开启自定义错误 customErrors modeOn/customErrors通常这样的异常处理是放在全局过滤器上面的只要任意Action方法报错就会执行MyHandleError过滤器中的代码。 修改App_Start目录下面的FilterConfig类 public class FilterConfig {public static void RegisterGlobalFilters(GlobalFilterCollection filters){//filters.Add(new HandleErrorAttribute());//添加全局授权过滤器filters.Add(new MyAuthorizeAttribute());//添加全局异常处理过滤器filters.Add(new MyHandleErrorAttribute());} } Global.asax下的代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing;namespace MvcApp {public class MvcApplication : System.Web.HttpApplication{protected void Application_Start(){AreaRegistration.RegisterAllAreas();FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);BundleConfig.RegisterBundles(BundleTable.Bundles);}} }
http://www.pierceye.com/news/676247/

相关文章:

  • 营销型网站建设优化建站坂田建设网站
  • 大型网站方案自己做网站详细流程
  • 网站开发中为什么有两个控制层南昌网站建设技术托管
  • 网站如何加入百度联盟易名中国网站
  • 海报在线制作免费网站网站建设费用明细湖南岚鸿
  • 宝塔服务器搭建网站教程盐城网站建设兼职
  • 南京网站制作公司怎么样wordpress思维导图
  • 学校网站建设和维护情况沈阳网页设计公司有哪些
  • 安徽网站建设电话网站建设动态静态
  • 网站建设规划设计公司排名摄影公司网站开发
  • php安防企业网站源码seo中文
  • 用什么开发和建设网站最好wordpress登录安全插件
  • 做网站哪个服务商便宜wordpress添加script
  • dede wap网站外贸客户开发的渠道有哪些
  • 营销型网站网站设计免费域名注册 国外
  • 杭州网站制作公司网站厦门网站建设 首选猴子网络
  • 公司如何建站合肥网站设计
  • wordpress单页导出wordpress head 优化
  • 建筑模版东莞网站建设技术支持北京网页制作服务商
  • 网站html地图怎么做的wordpress 国内视频网站
  • 哪个网站做的简历比较好龙岗做网站公司icxun
  • 海外网站开发网站打开慢怎么回事
  • 外贸导向企业网站搜索引擎大全排名
  • 网站域名怎么做变更企业查询系统
  • 12306网站多少钱做的怎么研发软件app
  • 手机端建站井冈山保育院网站建设
  • 服装设计网站怎么做wordpress网站商务通
  • 重庆建设医院官方网站医疗网站源码
  • 大学生想做网站天元建设集团有限公司商业承兑汇票拒付最新消息
  • 怎么区分营销型网站文章类型的网站模版