Asp.Net MVC在过滤器中使用模型绑定
2024-10-20 06:19:01
废话不多话,直接上代码
1、创建MVC项目,新建一个过滤器类以及使用到的实体类:
public class DemoFiltersAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
var person = new Person();
//过滤器中使用模型绑定
BindModel<Person>(filterContext, person);
filterContext.Result = new JsonResult() { Data = person, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
//base.OnAuthorization(filterContext);
} /// <summary>
/// 模型绑定
/// </summary>
/// <typeparam name="TModel"></typeparam>
/// <param name="model">模型(绑定成功后将会给此赋值)</param>
/// <param name="prefix">获取或设置在呈现表示绑定到操作参数或模型属性的标记时要使用的前缀</param>
public void BindModel<TModel>(AuthorizationContext filterContext, TModel model, string prefix = "") where TModel : class
{
IModelBinder binder = ModelBinders.Binders.GetBinder(typeof(TModel));
ModelBindingContext bindingContext = new ModelBindingContext()
{
ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, typeof(TModel)),
ModelName = prefix,
ValueProvider = filterContext.Controller.ValueProvider
};
binder.BindModel(filterContext.Controller.ControllerContext, bindingContext);
}
}
public class Person
{
public int Id { set; get; }
public string Name { set; get; }
}
继承了AuthorizeAttribute类中的OnAuthorization方法会在执行Action之前执行,具体可以查看我写的这篇文章《Asp.Net MVC过滤器》
2、新建一个控制类,并在控制器贴上DemoFilters特性:
[DemoFilters]
public class HomeController : Controller
{
// GET: Home
public ActionResult Index(Person p)
{
return Content("");
}
}
3、访问url:
http://localhost:8290/home/index?id=1&name=lisi
输出:{"Id":1,"Name":"lisi"}
最新文章
- [LeetCode] Delete Node in a BST 删除二叉搜索树中的节点
- CSS3中border-radius、box-shadow与gradient那点事儿
- js Date 函数方法 和 移动端数字键盘调用
- RestSharp简单扩展
- BI先特技软件 Analyzer安装时的部分问题
- NOIP水题合集[3/未完待续]
- 在opencv3中的机器学习算法练习:对OCR进行分类
- Linux文件系统的主要目录结构说明及分区方案
- spring-junit的标注总结
- windows不能在本地计算机启动SQL Server(MSSQLSERVER)
- jstl常用语句
- 记录1-更换mac pro内存,硬盘及恢复系统
- [转]MySQL中timestamp数据类型的特点
- 模仿select下拉列表
- eclipse maven maven-compiler-plugin 报错 完全解决
- 维护贴--linux下 mysql数据库的备份和还原 (转)
- 利用 LibWebP-NET 解码与编码 WebP 格式图片
- 冷知识:excel 2013有多少行列
- idea常用设置(持续更新)
- js 删除url指定参数
热门文章
- Vue.js---组件
- java基础知识(一)- 数据类型
- 为Ubuntu安装FTP服务
- 条件查询Criteria
- BZOJ3223: Tyvj 1729 文艺平衡树 无旋Treap
- ext radiogroup如何取值和设值
- WCF分布式开发步步为赢(15):错误契约(FaultContract)与异常处理(ExceptionHandle)
- 自定义toolbar教程
- Could not resolve com.android.support:multidex:1.0.2
- WebKit学习资源