实现Asp.Net Mvc4多级Views目录

建立自己MyViewEngine类让他继承RazorViewEngine,之后在构造函数里面写入设置视图位置格式代码如下:

public class MyViewEngine : RazorViewEngine
{
    public MyViewEngine()
    {
        ViewLocationFormats = new[]
        {
            "~/Views/{1}/{0}.cshtml",
            "~/Views/Shared/{0}.cshtml",
            "~/Views/UserInfo/{1}/{0}.cshtml",//UserInfo为Controllers控制器下的文件夹
            //可以一直往下添
            "~/Views/Admin/{1}/{0}.cshtml"//Admin为Controllers控制器下的文件夹
            //注:{1}表示Controller的名称,{0}表示视图名称
        };
    }
    //public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
    //{
    //    return base.FindView(controllerContext, viewName, masterName, useCache);
    //}
}

进入默认RouteConfig类里面添加路由配置添加如下代码:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "UserInfo",
        url: "UserInfo/{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

    routes.MapRoute(
        name: "Admin",
        url: "Admin/{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

在Global下的Application_Start注册你添加你的CustomViewEngine类代码如下:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        RegisterView();//注册视图访问规则
    }

    protected void RegisterView()
    {
        ViewEngines.Engines.Clear();//移除默认视图配置
        ViewEngines.Engines.Add(new FirstMVC.Models.MyViewEngine());//注册自己编写的视图格式
    }
}
时间: 2024-12-29 23:24:05

实现Asp.Net Mvc4多级Views目录的相关文章

MVC 多级目录(控制器) 路由重写 及 多级Views目录 的寻找视图的规则

转自:[原]Asp.net Mvc   多级控制器 路由重写 及 多级Views目录 的寻找视图的规则 asp.net mvc 为了更好的控制views的页面存放,和控制器的可读性,需要分开多级目录来存放. 1.那么我们再来看我们需要的访问方式,如下图 如果我们要访问Admin下的TestController里面的Index页面,那么我们输入Test/Index,这个肯定不行的.因为TestController根本就不在Controllers的根目录下,而是在Controllers/Admin下

Mvc多级Views目录 asp.net mvc4 路由重写及 修改view 的寻找视图的规则

一般我们在mvc开发过程中,都会碰到这样的问题.页面总是写在Views文件夹下,而且还只能一个Controller的页面只能写在相应的以Controller名命名的文件夹下.如果我们写到别处呢?那么肯定会报错.这是mvc中一个约定俗成的一个规定,必须这样写. 1.正常的项目目录,如下图: 我们要访问Index页面,只需要输入Home/Index就可以访问了.我们之所以能够这样访问,是因为我们在项目创建之初系统就默认配置了一个默认的路由.我们可以按照这个默认的路由规则进行访问. 2.那么我们再来看

ASP.NET MVC4企业级实战目录

http://www.cnblogs.com/jiekzou/p/5625762.html#!comments ************************************************** 已经好长一段时间没有更新博客了,那是因为最近正在写书,为了写书,已经有2.3个月的周末没有出门了,下面是书的目录,目前只完成了70%的初稿编写(前面9章基本完成),主要是最后两章的项目编码需要大量的时间,目前正在积极编码中....... 写书和写博客完全是两码事,要求真的不一样,每一行

asp.net mvc多级目录结构和多级area实现技巧

今天在工作要实现这个多级area.其原因是这个项目需要多级的功能,大的类别里有小的类别,小的类别里有具体的功能项,每一个功能项还有若干动作Action,所以在菜单和mvc工程的结构上都需要有体现多级的元素,菜单是用的accordion,每一个大类就是accordion的一个pane,然后每一个小类就是用一个表格来表示的,每一个功能就是用单元格加一个链接来表示的.在网站目录结构上,area可以很方便地实现一级的目录结构,比如可以有admin, backoffice, logging, busine

ASP.NET MVC4入门到精通系列目录汇总(转)

序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,Web开发依旧停留在拖控件的水平,最最基本的算 法,递归.排序(我不要求快速排序,你会冒泡就行了)都不会,数据库方面,很基础的SQL都写不出,分组过滤也不会,更别提性能了,问下数据优化经验,除 了回答加索引基本就没下文了.当然,一些过去N年都是做ASP.NET WebForm开发的,不熟悉MVC,那也没

ASP.NET MVC4入门到精通系列目录汇总

http://www.cnblogs.com/jiekzou/p/4772273.html ************************ 序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,Web开发依旧停留在拖控件的水平,最最基本的算 法,递归.排序(我不要求快速排序,你会冒泡就行了)都不会,数据库方面,很基础的SQL都写不出,分组过滤也不会,更别

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与目录(持续更新中...)

演示地址 帐号:admin 密码:admin123 请不要删除用户避免他人无法体验(文章中已经附带源码,源码开放到17讲下载) 快捷地址(QQ群37509873也有相应的下载):   第2讲源码下载  密码:wg0i 最新代码生成器+17讲源码下载 密码:n2ji SwfUpload在MVC4下多文件上传 密码:0ntz 也可以有偿获取一份最新源码联系QQ:729994997价格500 -------------------------------------------------------

[MVC4]初识ASP.NET MVC4

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充 系列目录 补充一下,有人要表单的代码,这个用代码生成器生成表Flow_Form表的Index代码就可以 加上几个按钮就可以了 <div class="mvctool"> <input id="txtQuery" type="text" class="searchText" /> @Ht