快捷搜索:

MVC进阶学习--个性化目录结构(二)

(一)浅谈MVC目录布局

在上一篇(《MVC进阶进修--个性化目录布局(一)》)中懂得到了MVC 的基础目录布局,以及各个目录的感化。我们只是说到了外面的目录布局,没有懂得到它运行的道理。是不是MVC的目录布局只能有那种固定的模式呢,我们能否根据自己的必要扩展这些目录布局呢。谜底是肯定的。由于asp.net MVC中引用了WebFromViewEngine 这个视图引擎

(二) WebFormViewEngine视图引擎

1.IView接口IView接口是对MVC布局中View工具的抽象, 此接口只有一个措施:

void Render(ViewContext viewContext, TextWriter writer);Render措施的感化便是展示View工具,

平日是将页面HTML写入到Writer中供浏览器展示.

2.IViewEngine接口MVC中ViewEngine的抽象,该接口有两个措施:

ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache)

ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)

该措施的感化便是探求视图工具,值得留意的是上面两个措施返回的都不是ViewPage 页面工具,而是ViewEngineResult 工具。我们可以将ViewEngineResult理解为一次查询的结果, 在ViewEngineResult工具中包孕有本次找到的IView工具.这句话我也不是太懂,看很多相关资料是这样写的,我也姑且这样写吧

3.IViewEngine 的实现类

IViewEngine有两个实现类。 WebFormViewEngine :VirtualPathProviderViewEngine:IViewEngine这个是它们的关系。而MVC中的试图引擎便是应用的WebFormViewEngine。 WebFormViewEngine包括了三个属性:

MasterLocationFormats可以个性化母版页的路径

ViewLocationFormats可以个性化试图页面的路径

PartialViewLocationFormats可以个性化用户控件的路径

4.在Global.asax 中注册个性化路径

1protected void Application_Start()

2{

3ViewEngines.Engines.Clear();

4

5ViewEngines.Engines.Add(new WebFormViewEngine()

6{

7ViewLocationFormats = new string[] {

8"~/{0}.aspx",

9"~/{0}.ascx",

10"~/Views/{1}/{0}.aspx",

11"~/Views/{1}/{0}.ascx",

12"~/Views/Shared/{0}.aspx",

13"~/Views/Shared/{0}.ascx"

14}

15});

16}

您可能还会对下面的文章感兴趣: