• 无尽的忙碌换来幸福的日子


    人总是忙碌的,从小要读书,长大了工作,结婚了,有孩子了,一辈子也可能等到孩子成家了才能稍微休息一下下吧,不过有时候想想,忙碌点好,一辈子也就那么长,等闭了后还能休息好久好久呢,何不忙碌点呢。

    从过年以后,一直忙碌着,忙撒呢,上班忙新网站改版,下班忙结婚,周末也忙结婚,几乎一天都没有消停过,老婆无数次问我累不累,我说不累,再累也觉得幸福,嘿嘿。

    感叹了一下,好久也没来了,最近工作上呢刚赶出来一个改版,用了Asp.Net MVC 目的也是学习下,因为周期比较紧张,本想好好研究的,都没有时间,到后来也就破罐子破摔了。今天献丑,说上一段。

    我们平时在做Asp.Net MVC(以下就简称mvc)项目的时候,页面文件结构都用了“/Views/Controllers/page.aspx”,而把一些PartialView呢放在/Views/Shared 目录下面,但如果PartialView越来越多了呢。。。。如果其中还混杂着几个MasterPage,几个Error.aspx。。。。这个目录看起来就。。。。。

    image

    O my lady gaga!忒难看了,如果多了以后那更难看了。。。。。

    为了看起来好看点,我准备分目录存放,我的目标是:

    image

    打开Home\Index.asp文件,放一个Login的PartialView吧。先运行一下看看吧。。。一定肯定以及确定不能运行,因为我们的mvc根本没有找到所需的文件,错误信息“The partial view 'xxx' was not found”。

    我们知道mvc在查找文件的时候,会到2个目录下查找,一个是Controller目录,一个就是Shared目录,寻找Action.aspx或者Action.ascx,我们看下源代码(我下载的是asp.net mvc rc2),通过查看源代码,得知查找View或者PartialView都是通过IViewEngine.FindView和IViewEngine.FindPartialView来查找的。通过静态类:ViewEngines中的Engines,递归寻找,如果找到就显示,如果没有找到就报异常了。我们看下ViewEngines代码:

     1:  public static class ViewEngines
     2:  {
     3:   
     4:      private readonly static ViewEngineCollection _engines = new ViewEngineCollection {
     5:          new WebFormViewEngine() 
     6:      };
     7:   
     8:      public static ViewEngineCollection Engines
     9:      {
    10:          get
    11:          {
    12:              return _engines;
    13:          }
    14:      }
    15:  }

    ViewEngines默认有一个实现了IVewEngine的类:WebFormViewEngine,这个类的源代码不是很长,主要是以下3个属性:

     1:  MasterLocationFormats = new[] 
     2:  {
     3:      "~/Views/{1}/{0}.master",
     4:      "~/Views/Shared/{0}.master"
     5:  };
     6:   
     7:  ViewLocationFormats = new[] 
     8:  {
     9:      "~/Views/{1}/{0}.aspx",
    10:      "~/Views/{1}/{0}.ascx",
    11:      "~/Views/Shared/{0}.aspx",
    12:      "~/Views/Shared/{0}.ascx"
    13:  };
    14:   
    15:  PartialViewLocationFormats = ViewLocationFormats;

    很明显,这几个属性代表了路径格式,Master、View、PartialView的路径格式都可以设置。

    现在知道了这么多,对我这个懒人来说已经足够了。动手来实现一下:

    在Global文件中Application_Start方法中,添加以下代码(这样程序启动的时候添加一次就够了):

     1:  ViewEngines.Engines.Add(new WebFormViewEngine
     2:  {
     3:      ViewLocationFormats = new string[]
     4:      {
     5:          "~/Views/Shared/ErrorPage/{0}.aspx"
     6:      },
     7:   
     8:      PartialViewLocationFormats = new string[]
     9:      {
    10:          "~/Views/Shared/Partial/{0}.ascx"
    11:      }
    12:  });

    好了,运行吧,应该没什么问题了,这样我们以后,可以按照自己想要的方式来存放文件了,这样结构也比较清晰。这次寻找的目的也是因为在页面广告上,一开始都放在了Shared目录下面,看上去太不爽了,就找了下方法,当然肯定还有其他方法,我也比较偷懒,就用了它自带的类完成了目标,也算可以了,吼吼。

    PS:今天估计都是Google的天下,Google坚持了自己的信念,对个人来说我比较支持,但对于公司角度来说,现在真不敢再在Google上投推广了。

    邮箱:james@taogame.com
    QQ:785418
    微信:jamesying1
    QQ群:376248054 通关:cnblogs
    技术改变生活,技术改变人生!用技术来创造价值,拥有技术,不仅仅是开发,您将获得更多!如果您觉得我能帮到您,您可以通过扫描下面二维码来【捐助】我!
  • 相关阅读:
    TCP建立连接三次握手和释放连接四次握手
    集群/分布式环境下5种session处理策略
    MySQL两种引擎的区别
    【深入理解JVM】:类加载器与双亲委派模型
    Spring Cloud组件完整
    用Redis轻松实现秒杀系统
    分布式锁的基本原理
    中文分词-jieba
    win10安装mysql5.7.20解压版
    tenaorflow函数(1)
  • 原文地址:https://www.cnblogs.com/inday/p/1692382.html
Copyright © 2020-2023  润新知