首页 > 编程语言 >ASP.NET MVC5.0 筑基到炼气大圆满一篇就搞定

ASP.NET MVC5.0 筑基到炼气大圆满一篇就搞定

时间:2023-06-09 11:33:44浏览次数:38  
标签:ASP Log 筑基 System 过滤器 using 大圆满 public

 

一、ASP.NET MVC 过滤器

ASP.NET MVC框架支持四种不同类型的过滤器:

    • 授权过滤器 - 实现IAuthorizationFilter属性。

    • 动作过滤器 - 实现IActionFilter属性。

    • 结果过滤器 - 实现IResultFilter属性。

    • 异常过滤器 - 实现IExceptionFilter属性。

 

namespace MVCFiltersDemo.Controllers{
   public class HomeController : Controller{
      // GET: Home
        
      [OutputCache(Duration = 15)]
      public string Index(){
         return "This is ASP.Net MVC Filters Tutorial";
      }
        
      [OutputCache(Duration = 20)]
      public string GetCurrentTime(){
         return DateTime.Now.ToString("T");
      }
   }
}

请求以下URL http:// localhost:62833 / Home / GetCurrentTime,您将收到以下输出。

Localhost GetCurrentTime

如果刷新浏览器,您将看到相同的时间,因为该操作缓存了20秒。20秒后刷新时会更新。

 

自定义过滤器

要创建自己的自定义过滤器,ASP.NET MVC框架提供了一个称为ActionFilterAttribute的基类。该类实现了IActionFilter和IResultFilter接口,并且都从Filter类派生。

让我们来看一下简单的自定义过滤器示例,方法是在ActionFilters的项目中创建一个新的文件夹。添加一个类,右键单击ActionFilters文件夹,然后选择添加→类。

自定义过滤器

在名称字段中输入“MyLogActionFilter”,然后单击“添加”按钮。

该类将派生自ActionFilterAttribute,它是一个基类,并覆盖以下方法。以下是MyLogActionFilter的完整实现。

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace MVCFiltersDemo.ActionFilters {
   public class MyLogActionFilter : ActionFilterAttribute{
      public override void OnActionExecuting(ResultExecutingContextfilterContext){
         Log("OnActionExecuting", filterContext.RouteData);
      }
		
      public override void OnActionExecuted(ActionExecutedContextfilterContext){
         Log("OnActionExecuted", filterContext.RouteData);
      }
		
      public override void OnResultExecuting(ResultExecutingContextfilterContext){
         Log("OnResultExecuting", filterContext.RouteData);
      }
		
      public override void OnResultExecuted(ResultExecutedContextfilterContext){
         Log("OnResultExecuted", filterContext.RouteData);
      }
		
      private void Log(string methodName, RouteData routeData){
         var controllerName = routeData.Values["controller"];
         var actionName = routeData.Values["action"];
			
         var message = String.Format(
            "{0} controller:{1} action:{2}", methodName, controllerName, actionName);
				
         Debug.WriteLine(message, "Action Filter Log");
      }
   }
}

现在让我们使用以下代码将日志过滤器应用于HomeController。

using MVCFiltersDemo.ActionFilters;
using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;

namespace MVCFiltersDemo.Controllers {
   [MyLogActionFilter]
   public class HomeController : Controller{
      // GET: Home
		
      [OutputCache(Duration = 10)]
      public string Index(){
         return "This is ASP.Net MVC Filters Tutorial";
      }
		
      [OutputCache(Duration = 10)]
      public string GetCurrentTime(){
         return DateTime.Now.ToString("T");
      }
   }
}

运行应用程序,然后观察输出窗口。

输出窗口

如上图所示,处理动作的阶段将记录到Visual Studio输出窗口中。

 

标签:ASP,Log,筑基,System,过滤器,using,大圆满,public
From: https://www.cnblogs.com/DinAction/p/17468729.html

相关文章

  • ASP.NET Core使用EF Core操作MySql数据库
    ASP.NETCore使用EFCore操作MySql数据库 ASP.NETCore操作MySql数据库,这样整套环境都可以布署在Linux上使用微软的Microsoft.EntityFrameworkCore(2.1.4)和MySql出的MySql.Data.EntityFrameworkCore(8.0.13) 软件版本Asp.netCore:2.1MySql:5.6 项目结构Snai.Mysql是Asp.......
  • ASP.NET Core 中间件 中间件(Middleware)和过滤器(Filter)的区别
    前言在上篇文章主要介绍了DotNetCore项目状况,本篇文章是我们在开发自己的项目中实际使用的,比较贴合实际应用,算是对中间件的一个深入使用了,不是简单的HelloWorld,如果你觉得本篇文章对你有用的话,不妨点个【推荐】。目录中间件(Middleware)的作用中间件的运行方式中间件(Middleware)和过......
  • Using Redis Cache for session data storage in ASP.NET Core
    reference: https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed?view=aspnetcore-6.0Postedon:11-12-2017TweetWhenyourunanappindevelopmentortesting,itcanbeokayforsessiondatatobelostduringapprestarts.However,in......
  • [ASP.NET Core] 请求大小限制(转载)
    请求大小一般在文件上传的时候会用到,当然也防止传过来的参数过大情况。一、设置请求体的最大值如果不设置请求体大小默认是 30_000_000bytes,大约28.6MB,当超出大小时会出现如下错误:错误:Failedtoreadtherequestform.Requestbodytoolarge.Themaxrequestbodysize......
  • 在MOSS中直接嵌入ASP.NET Page zt
    在MOSSDocumentLibrary中的Page,有BasicPage和WebPartPage两种,前者更多的体现WCM特性,后者则更侧重体现Portal特性。不管是BasicPage还是WebPartPage,都是直接和MOSS本身结合非常密切,都直接采用Site中的MasterPage。如果我们想把一个普通的ASP.NETPage也加到MOSS站点里运行,......
  • 每个 ASP.NET 开发人员都应该知道的 IIS 管道中的 HTTP 请求生命周期事件
    原文:https://www.dotnetcurry.com/aspnet/747/http-request-lifecycle-events-iis-pipeline-aspnet......
  • asp.net里cookie、session进一步理解
    参照:session+cookie简单讲解以及持久化登录实现_session实现用户登录_AkagiSenpai的博客-CSDN博客sessionID和cookie-哈哈呵h-博客园(cnblogs.com)概念介绍cookie——是http无状态特性的补充,是在客户端保持状态的方案,以key/value的形式进行保存。网站经常使用这个技术来......
  • 基于Raspberry 的 libcamera 使用
    1.libcameraandlibcamera-apps工具简介I.libcamera是一款用来支持用户基于Linux操作系统控制复杂相机的应用程序,用户可以通过libcamera直接操作树莓派芯片集成的GPU模块。II.libcamera开放了基于C++语言的应用程序接口用于配置相机并从相机获取图像的功能API,同时libcam......
  • Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
    运行环境照例,先亮环境;软件的话我这里假设你已经批准好了.netcore运行环境,未配置可以看我的这篇[linux(centos)搭建.netcore运行环境]腾讯云centos:7.2cpu:1核2G内存1M带宽docker:18.06.1-ce安装docker安装其实很简单,就不重复说了,请查看纯洁大神这篇文章准备你的.netcoreweb程......
  • aspose word与pdf互转
    asposeword与pdf互转packagecom.example.core.mydemo.aspose;importcom.aspose.words.Document;importcom.aspose.words.License;importcom.aspose.words.SaveFormat;importjava.io.ByteArrayInputStream;importjava.io.File;importjava.io.FileOutputStream;......