我们平时在做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开发出来的框架源代码! 采用主流框架,容易上手,简单易学,学习成本低。可完全实现二次开发、基本满足80%项目需求。 可以帮助解决.NET项目70%的重复工作,让开发更多关注业务...
第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的体系结构...
VS2019的简单ASP.NET MVC系统,采用默认页面,结构简单,代码少,基本的增删改查功能。带实现步骤。
1、一套基于ASP.NET MVC+EF6+Bootstrap开发出来的框架,源代码完全开源,可以帮助你解决C#以及.NET项目68%的重复工作,让开发人员远离加班。 2、使用ApacheLicense2.0协议,采用主流框架,容易上手,简单易学,学习...
YQBlog - 基于Asp.Net MVC3 EF4.0技术的个人博客系统。 网站结构: 权限:.net membership 文章分类:category.js(json格式存储) 文章内容:表 blog_article,blog_articledetail 以及 视图 blog_varticle ...
1、大型互联网平台后台管理系统是一套基于ASP.NET MVC+EF6+Bootstrap开发出来的框架,可完全实现二次开发、基本满足80%项目需求。 二、功能介绍 1、可以帮助解决.NET项目70%的重复工作,让开发更多关注业务逻辑。...
1、大型互联网平台后台管理系统是一套基于ASP.NET MVC+EF6+Bootstrap开发出来的框架,可完全实现二次开发、基本满足80%项目需求。 二、功能介绍 1、可以帮助解决.NET项目70%的重复工作,让开发更多关注业务逻辑。既...
•核心框架:ASP.NET MVC5、WEB API •持久层框架:EntityFramework 6.0 •定时计划任务:Quartz.Net组件 •安全支持:过滤器、Sql注入、请求伪造 •服务端验证:实体模型验证、自己封装Validator •缓存...
基于asp.net mvc的定位签到系统,后台使用layui,json格式数据传输,简单三层结构,后台可看到使用人员基本情况,出勤率,早退,迟到等数据。数据库,手机h5页面,后台齐全。前台h5手机页面签到签退登陆定位个人信息...
带有RequireJS的ASP.NET MVC应用示例 JavaScript结构 剧本|-库| --- | --jquery-2.1.4.min.js | --- | --require.js | --app.js | --config.js | --DependencyModule.js | --HomeModule.js | --ModuleOne.js | --...
该项目允许传统的 ASP.NET MVC 服务器端操作/视图与客户端模型一起作为应用程序中的页面被调用和注入; 这提供了额外的好处,即能够在呈现之前在控制器中进行标准的服务器端处理。 ###技术 ASP.NET MVC 4 C# 淘汰...
缓存管理:为了提高应用程序的性能,我们将使用ASP.NET提供的缓存机制来缓存常用的数据和页面。这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程...
Combres使用和可以帮助您的ASP.NET和ASP.NET MVC应用程序更快地执行并获得更好的排名。 平台: ASP.NET 3.5-4.5 ASP.NET MVC 2-5 特征: 一站式服务,用于JS / CSS,,和缓存(具有 , 和服务器端缓存)。 ...
缓存管理:为了提高应用程序的性能,我们将使用ASP.NET提供的缓存机制来缓存常用的数据和页面。这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程...
缓存管理:为了提高应用程序的性能,我们将使用ASP.NET提供的缓存机制来缓存常用的数据和页面。这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程...
缓存管理:为了提高应用程序的性能,我们将使用ASP.NET提供的缓存机制来缓存常用的数据和页面。这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程...
Asp.net+Jquery做的无刷新分页 ,使用前请看帮助文档,有数据库以及表结构的介绍,只需改动webConfig的连接字符~,开发工具:VS2010+Sql2005