如何在ASP.NET MVC为Action定义筛选器
2024-08-30 13:35:16
在ASP.NET MVC中,经常会用到[Required]等特性,在MVC中,同样可以为Action自定义筛选器,来描述控制器所遵守的规则。
首先,我们在ASP.NET MVC项目中定义一个TestController,控制器中包含两个Action动作方法,代码如下:
public class TestController : Controller
{ public string FirstPage()
{
return "请输入ID";
}
//
// GET: /Test/ [InputID]
public string Index(int id)
{
return "已经输入了ID";
}
}
从代码中可以看出,两个动作方法均返回字符串,不同之处是后者应用了自定义的InputID筛选器。
然后,自定义筛选器Input,筛选器同样为C#类,其继承自ActionFilterAttribute类,实现IActionFilter接口。
在自定义的筛选器中,重写基类中的OnActionExecuting虚方法,该方法会在执行Action方法之前由ASP.NET MVC框架调用,该方法说明如下:
//
// 摘要:
// 在执行操作方法之前由 ASP.NET MVC 框架调用。
//
// 参数:
// filterContext:
// 筛选器上下文。
public virtual void OnActionExecuting(ActionExecutingContext filterContext);
Input筛选器代码如下:
public class InputID : ActionFilterAttribute, IActionFilter
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if(String.IsNullOrEmpty(filterContext.HttpContext.Request.QueryString["id"]))
{
filterContext.Result = new RedirectResult("/test/FirstPage");
return;
}
else
{
return;
}
}
}
依据代码,判断查询字符串中key为id的值,如果为空,将跳转到test控制器中的FirstPage方法。否则直接返回。
自定义筛选器完成,实验,在浏览器中输入不同的URL,如图:
综上,通过自定义筛选器,并定义OnActionExecuting方法,该方法在动作方法之前执行,最终产生不同的执行结果。
最新文章
- ZOJ Problem Set - 1006 Do the Untwist
- C++中的内联成员函数与非内联成员函数
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
- UDK:AdventureKit 攀爬系统
- 19 图形用户界面编程 - 《Python 核心编程》
- SPRING IN ACTION 第4版笔记-第十章Hitting the database with spring and jdbc-002-本章的源代码
- C插入排序
- Service与Activity与交流AIDL
- Python迭代和解析(5):搞懂生成器和yield机制
- springboot +thymeleaf+myql 记录
- mysql执行sql脚本文件
- GSM与GPRS的区别
- RPO攻击 &; share your mind
- with文件操作
- Deap thinking
- Lua Linux环境下安装
- zedboard开发板上移植opencv代码(立体匹配)
- tomcat 配置域名访问应用
- CefSharp.OffScreen.Example
- Mybatis中的update动态SQL语句
热门文章
- macos php安装扩展sqlsrv连接sqlserver
- windows 异步通知I/O模型与重叠I/O模型
- git for mac
- Qt文本读写之二:目录操作
- 亚马逊左侧菜单延迟z三角 jquery插件jquery.menu-aim.js源码解读
- web简单的整体测试
- C#基础学习5
- 使用ant build build.xml报“includeantruntime was not set”警告及";Class not found: javac1.8";问题
- slimScroll的应用(一)
- Macbook air 上打开cocoscreator出错