zoukankan      html  css  js  c++  java
  • Asp.Net MVC part45 过滤器、模板页

    过滤器

    使用方式
    自定义类继承自相应的类或接口,重写方法,作为特性使用
    在控制器类中重写方法

    特性方式的使用
    注意:如果继承自接口需要让类实现FilterAttribute,才可以作为特性使用
    使用方式1:作为Controller或Action的特性
    使用方式2:在Global中注册为全局过滤器,应用于所有的Controller的Action
    参数类均继承自ControllerContext,主要包含属性请求上下文、路由数据、结果

    身份验证过滤器
    在约束的Action执行前执行
    重写OnAuthorization方法
    如果不想使用默认的身份验证方式,需要将base.***删除
    如果想进行跳转,需要设置上下文对象的Result属性为new RedirectResult(string url);

    异常处理过滤器
    当发生异常时,用于进行自定义异步处理,如记录日志、跳转页面
    使用自定义异常处理,需要在web.config中为system.web添加<customErrors mode="On" />节点
    重写OnException方法,不要禁用base.***
    如果想进行跳转,需要设置上下文对象的Result属性为new RedirectResult(string url);

    行为过滤器
    在行为被执行前、后执行的过滤器
    重写方法OnActionExecuting(行为执行前)
    重写方法OnActionExecuted(行为执行后)

    结果过滤器
    在结果被执行前、后执行的过滤器
    重写方法OnResultExecuting(结果执行前)
    重写方法OnActionExecuted(结果执行后)

    模板页
    模板页:在一个页面上进行布局,并留出空白区域供子页面填充
    在MVC项目中,Views文件夹下有一个Shared文件夹,用于存储所有的模板页面
    视图引擎,默认优先查找aspx引擎页面,如果不存在则查找razor引擎页面

    对于aspx引擎使用母版页Master
    新建母版页,使用ContentPlaceHolder可以空出来多个区域供子页面填充,设置ID属性以作区分
    为Action新建一个aspx引擎的页面,选择母版页并指定主填充区域的ID值
    在相应的Content标签中编写具体内容的代码,通过ContentPlaceHolderID属性标识出替换母版页中哪个区域

    对于Razor引擎,使用布局页.cshtml
    在Shared文件夹中新建mvc布局页
    使用@RenderBody()标识出空白区域
    新建Action的View,选择刚才创建的布局页,属性Layout指向了布局页的地址
    在页面中写一段代码,运行查看效果
    如果不指定Layout则会使用_ViewStart.cshtml指定的模板页面,这是所有页面调用的部分
    如果不想使用模板页面,设置Layout=“”即可
    可以使用RenderSection(string name, bool required)在布局页中抠出来更多的区域,在子页面中使用@section 名称{…}进行填充

  • 相关阅读:
    MFC tab页面中获到其它页面的数据
    sqlite数据库中"Select * From XXX能查到数据,但是Select DISTINCT group From xxx Order By group却查不出来
    关闭程序出现崩溃(exe 已触发了一个断点及未加载ucrtbased.pdb)
    springboot 通用Mapper使用
    springBoot 发布war包
    springCloud Zuul网关
    springboot hystrix turbine 聚合监控
    springBoot Feign Hystrix Dashboard
    springBoot Ribbon Hystrix Dashboard
    springBoot Feign Hystrix
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/6115561.html
Copyright © 2011-2022 走看看