ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现

 更新时间:2020年04月07日 09:05:35   作者:HueiFeng  
这篇文章主要介绍了ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

IViewLocationExpander API

  • ExpandViewLocations Razor视图路径,视图引擎会搜索该路径.
  • PopulateValues 每次调用都会填充路由

项目目录如下所示

创建区域扩展器,其实我并不需要多区域,我目前只需要达到一个区域中有多个文件夹进行存放我的视图.

所以我通过实现IViewLocationExpander进行扩展添加我自定义视图路径规则即可正如下代码片段

 public class MyViewLocationExpander : IViewLocationExpander
  {
    public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations)
    {
      if (context.ControllerName != null && context.ControllerName.StartsWith("App"))
      {
        viewLocations = viewLocations.Concat(
          new[] { $"/Areas/sysManage/Views/App/{context.ControllerName}/{context.ViewName}{RazorViewEngine.ViewExtension}"
              });
        return viewLocations;
      }

      if (context.AreaName != "sysManage") return viewLocations;
      viewLocations = viewLocations.Concat(
        new[] { $"/Areas/sysManage/Views/System/{context.ControllerName}/{context.ViewName}{RazorViewEngine.ViewExtension}"
        });
      return viewLocations;
    }

    public void PopulateValues(ViewLocationExpanderContext context)
    {
    }
  }

在Startup.ConfigureServices 注册

 public void ConfigureServices(IServiceCollection services) 
    { 
      services.Configure<RazorViewEngineOptions>(o => { 
        o.ViewLocationExpanders.Add(new MyViewLocationExpander()); 
      }); 
      services.AddMvc(); 
    } 
 app.UseEndpoints(endpoints =>
      {
        endpoints.MapRazorPages();
        endpoints.MapAreaControllerRoute(
          name: "sysManage", "sysManage",
          pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
      });

最终路由指向的还是

/SysManage/Controller/Action

到此这篇关于ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现的文章就介绍到这了,更多相关ASP.NET Core MVC 扩展视图搜索路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • asp.net实现非常实用的自定义页面基类(附源码)

    asp.net实现非常实用的自定义页面基类(附源码)

    这篇文章主要介绍了asp.net实现非常实用的自定义页面基类,包含日志处理、控件赋值、异常处理等功能,非常具有实用价值,需要的朋友可以参考下
    2015-11-11
  • asp.net保存网上图片到服务器的实例

    asp.net保存网上图片到服务器的实例

    本篇文章主要介绍了asp.net保存网上图片到服务器,非常具有实用价值,需要的朋友可以参考下。
    2016-10-10
  • 详解ASP.NET Core 之 Identity 入门(三)

    详解ASP.NET Core 之 Identity 入门(三)

    本篇文章主要介绍了ASP.NET Core 之 Identity 入门,主要负责对用户的身份进行认证,有兴趣的可以了解一下。
    2016-12-12
  • ASP.NET MVC使用Quartz.NET执行定时任务

    ASP.NET MVC使用Quartz.NET执行定时任务

    这篇文章介绍了ASP.NET MVC使用Quartz.NET执行定时任务的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • ASP.NET Core中使用多环境

    ASP.NET Core中使用多环境

    这篇文章介绍了ASP.NET Core中使用多环境的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 关于C#中DateTime常用方法概述

    关于C#中DateTime常用方法概述

    C#中DateTime日期时间在应用中比较广泛的了,本文列出了C#中DateTime常用的方法与属性,感兴趣的你可不要错过了哈
    2013-02-02
  • ASP.NET中如何实现回调

    ASP.NET中如何实现回调

    这篇文章主要为大家详细介绍了ASP.NET中如何实现回调操作,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • MVC使用T4模板生成其他类的具体实现学习笔记2

    MVC使用T4模板生成其他类的具体实现学习笔记2

    这篇文章主要为大家详细介绍了MVC使用T4模板生成其他类的具体实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • asp.C#实现图片文件与base64string编码解码

    asp.C#实现图片文件与base64string编码解码

    前些天在opera论坛里面当了个flashblocker脚本文件,顾名思义,就是把网页中的flash给过滤了,过滤之后呢就会在原位置显示一张图片,以前用firefox时的flash过滤插件也是这样,而且显示的图片也一样,一样的难看,于是就想换换它。
    2010-03-03
  • ASP.NET实现级联下拉框效果实例讲解

    ASP.NET实现级联下拉框效果实例讲解

    这篇文章主要为大家详细介绍了ASP.NET实现级联下拉框效果实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-09-09

最新评论