`

asp.net mvc页面结构

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

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

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



打开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代码:
public static class ViewEngines 
{ 
	private readonly static ViewEngineCollection _engines = new ViewEngineCollection 
	{
		new WebFormViewEngine() 
	};
	public static ViewEngineCollection Engines
	{
		get
		{
			return _engines;
		}
	}
}

ViewEngines默认有一个实现了IVewEngine的类:WebFormViewEngine,这个类的源代码不是很长,主要是以下3个属性:
  MasterLocationFormats = new[]  
  { 
		"~/Views/{1}/{0}.master", 
		"~/Views/Shared/{0}.master" 
  };
  ViewLocationFormats = new[]  
  { 
		"~/Views/{1}/{0}.aspx",
		"~/Views/{1}/{0}.ascx",
        "~/Views/Shared/{0}.aspx",
		"~/Views/Shared/{0}.ascx"
  };
  PartialViewLocationFormats = ViewLocationFormats;


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

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

在Global文件中Application_Start方法中,添加以下代码(这样程序启动的时候添加一次就够了):
ViewEngines.Engines.Add(
	new WebFormViewEngine 
	{
		ViewLocationFormats = new string[]
		{ 
			"~/Views/Shared/ErrorPage/{0}.aspx" 
		}, 
		PartialViewLocationFormats = new string[] 
		{
			"~/Views/Shared/Partial/{0}.ascx"
		}
	}
);


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

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

相关推荐

    ASP.NET MVC+EF6+Bootstrap开发C#源代码

    一套基于ASP.NET MVC+EF6+Bootstrap开发出来的框架源代码! 采用主流框架,容易上手,简单易学,学习成本低。可完全实现二次开发、基本满足80%项目需求。 可以帮助解决.NET项目70%的重复工作,让开发更多关注业务...

    《[精通ASP.NET.MVC.5框架》高清带书签

    第1章 ASP.NET MVC背景 1 1.1 理解ASP.NET历史 1 1.2 当今的Web开发 3 1.2.1 Web标准与REST 3 1.2.2 敏捷与测试驱动开发 3 1.2.3 Ruby on Rails 4 1.2.4 Node.js 4 1.3 ASP.NET MVC的关键优点 5 1.3.1 MVC的体系结构...

    简单的ASP.NET MVC系统.zip

    VS2019的简单ASP.NET MVC系统,采用默认页面,结构简单,代码少,基本的增删改查功能。带实现步骤。

    快速开发框架C#源码完全开源版 基于ASP.NET MVC+EF6+Bootstrap框架等

    1、一套基于ASP.NET MVC+EF6+Bootstrap开发出来的框架,源代码完全开源,可以帮助你解决C#以及.NET项目68%的重复工作,让开发人员远离加班。 2、使用ApacheLicense2.0协议,采用主流框架,容易上手,简单易学,学习...

    YQBlog - 基于Asp.Net MVC3 EF4.0技术的个人博客系统

    YQBlog - 基于Asp.Net MVC3 EF4.0技术的个人博客系统。 网站结构: 权限:.net membership 文章分类:category.js(json格式存储) 文章内容:表 blog_article,blog_articledetail 以及 视图 blog_varticle ...

    ASP.NET MVC+EF6+Bootstrap大型互联网平台后台管理系统源码

    1、大型互联网平台后台管理系统是一套基于ASP.NET MVC+EF6+Bootstrap开发出来的框架,可完全实现二次开发、基本满足80%项目需求。 二、功能介绍 1、可以帮助解决.NET项目70%的重复工作,让开发更多关注业务逻辑。...

    ASP.NET MVC+EF6+Bootstrap开发的后台管理系统源码

    1、大型互联网平台后台管理系统是一套基于ASP.NET MVC+EF6+Bootstrap开发出来的框架,可完全实现二次开发、基本满足80%项目需求。 二、功能介绍 1、可以帮助解决.NET项目70%的重复工作,让开发更多关注业务逻辑。既...

    快速开发框架NFine ASP.NET MVC+EF6+Bootstrap开发框架

    •核心框架:ASP.NET MVC5、WEB API •持久层框架:EntityFramework 6.0 •定时计划任务:Quartz.Net组件 •安全支持:过滤器、Sql注入、请求伪造 •服务端验证:实体模型验证、自己封装Validator •缓存...

    asp.net定位签到系统.rar

    基于asp.net mvc的定位签到系统,后台使用layui,json格式数据传输,简单三层结构,后台可看到使用人员基本情况,出勤率,早退,迟到等数据。数据库,手机h5页面,后台齐全。前台h5手机页面签到签退登陆定位个人信息...

    ASP-NET-MVC-RequireJS:带有RequireJS的ASP.NET MVC应用示例

    带有RequireJS的ASP.NET MVC应用示例 JavaScript结构 剧本|-库| --- | --jquery-2.1.4.min.js | --- | --require.js | --app.js | --config.js | --DependencyModule.js | --HomeModule.js | --ModuleOne.js | --...

    SPATemplateKO:由 ASP.NET MVC + Knockout.js 提供支持的简单 SPA 模板

    该项目允许传统的 ASP.NET MVC 服务器端操作/视图与客户端模型一起作为应用程序中的页面被调用和注入; 这提供了额外的好处,即能够在呈现之前在控制器中进行标准的服务器端处理。 ###技术 ASP.NET MVC 4 C# 淘汰...

    ASP.NET基于BS结构的实验室预约模型系统(源代码+thesis).zip

    缓存管理:为了提高应用程序的性能,我们将使用ASP.NET提供的缓存机制来缓存常用的数据和页面。这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程...

    combres:ASP.NET和MVC性能优化库

    Combres使用和可以帮助您的ASP.NET和ASP.NET MVC应用程序更快地执行并获得更好的排名。 平台: ASP.NET 3.5-4.5 ASP.NET MVC 2-5 特征: 一站式服务,用于JS / CSS,,和缓存(具有 , 和服务器端缓存)。 ...

    ASP.NET基于CS结构的企业人事管理系统的设计与实现(源代码+thesis).zip

    缓存管理:为了提高应用程序的性能,我们将使用ASP.NET提供的缓存机制来缓存常用的数据和页面。这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程...

    ASP.NET网络在线考试系统(源代码+thesis).zip

    缓存管理:为了提高应用程序的性能,我们将使用ASP.NET提供的缓存机制来缓存常用的数据和页面。这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程...

    ASP.NET图书馆管理信息系统(源代码+thesis).zip

    缓存管理:为了提高应用程序的性能,我们将使用ASP.NET提供的缓存机制来缓存常用的数据和页面。这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程...

    Asp.net JQuery无刷新分页

    Asp.net+Jquery做的无刷新分页 ,使用前请看帮助文档,有数据库以及表结构的介绍,只需改动webConfig的连接字符~,开发工具:VS2010+Sql2005

Global site tag (gtag.js) - Google Analytics