新建Basic类型的Project
1.Models目录下新建:
MyFilter.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcActionFilter.Models
{
public class MyFilter:ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Session["temp"]+= "Before ActionExecute<br/>";
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Session["temp"]+= "After ActionExecute<br/>";
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Session["temp"]+= "Before ResultExecute<br/>";
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Session["temp"]+= "After ResultExecute<br/><hr>";
}
}
}
2.HomeController.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcActionFilter.Models;
namespace MvcActionFilter.Controllers
{
public class HomeController : Controller
{
//protected override void OnActionExecuting(ActionExecutingContext filterContext)
//{
// Session["temp"] += "Inner Before ActionExecute <br/>";
//}
[MyFilter]
public ActionResult Index()
{
Session["temp"] += "IndexAction<br/>";
return View();
}
[MyFilter]
public ActionResult TestFilter()
{
Session["temp"] += "TestFilterAction<br/>";
return View();
}
public ActionResult Show()
{
Session["temp"] += "ShowAction<br/>";
return View();
}
}
}
2.相关view:
Index.cshtml:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@{
Session["temp"] += "IndexView<br/>";
}
@Html.ActionLink("TestFilter","TestFilter")
TestFilter.cshtml:
@{
ViewBag.Title = "TestFilter";
}
<h2>TestFilter</h2>
@Html.ActionLink("Show","Show")
@{
Session["temp"] += "TestFilterView<br/>";
}
Show.cshtml:
@{
ViewBag.Title = "Show";
}
<h2>Show</h2>
@{
Session["temp"] += "ShowView<br/>";
}
@Html.Raw(Session["temp"].ToString())