BrnShop开源网上商城第六讲:扩展视图功能
2015-02-02 11:16
225 查看
在正式讲解扩展视图功能以前,我们有必要把视图的工作原理简单说明下。任何一个视图都会被翻译成一个c#类,并保存到指定的位置,然后被编译。这也就是为什么能在视图中包含c#代码片段的原因。下面我们通过一个项目具体的了解一下这个过程,首先我们新建一个mvc3项目,它的Index.cshtml视图文件的代码如下:
直到应用程序启动之前,mvc应用程序的视图不会被编译,因此要查看此视图翻译成的类,需要启动应用程序,并导航到一个动作方法。可以选择任何动作方法,这是因为,发送到mvc应用程序的最初请求会触发视图编译过程。视图所生成的类被保存在磁盘上,随后被编译。以win7为例,文件保存位置为C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files文件夹(其他版本的操作系统请自行对应)。这里我把上面的这个视图生成的c#类代码帖出来:
关于这个文件有以下几点给大家说明下:
类名格式:生成的类名称格式为"_Page_Views_控制器名_视图名_文件扩展名"。大家可以看到生成的类名为"_Page_Views_Home_Index_cshtml"符合这个格式。
父类:如果视图不是强类型视图则此类继承自System.Web.Mvc.WebViewPage<dynamic>,如果视图为强类型视图则继承自System.Web.Mvc.WebViewPage<指定的模型类>。
输出:通过调用此类的Execute方法输出视图内容。
至此关于视图的工作原理大家应该有一定的了解了(大家有时间可以多研究一下这个类,对提高mvc水平还是很有帮助的),接下来进入今天的正题:扩展视图功能。通过上面讲解视图的工作原理大家可以看出,要想扩展视图的功能,一个非常好的切入点就是扩展视图基类。我们以多店版网上商城BrnMall为例,代码如下:
在此类中我们添加了一个属性WorkContext,并在InitHelpers方法中对它进行赋值。这样我们在视图中就可以直接访问这个属性而不需要每次都通过控制器进行类型转换获得。代码如下:
不过要想让此视图基类正常工作还需要对视图文件夹中的Web.config文件中进行修改,代码如下:
好了,今天的内容到此就结束了。
类名格式:生成的类名称格式为"_Page_Views_控制器名_视图名_文件扩展名"。大家可以看到生成的类名为"_Page_Views_Home_Index_cshtml"符合这个格式。
父类:如果视图不是强类型视图则此类继承自System.Web.Mvc.WebViewPage<dynamic>,如果视图为强类型视图则继承自System.Web.Mvc.WebViewPage<指定的模型类>。
输出:通过调用此类的Execute方法输出视图内容。
至此关于视图的工作原理大家应该有一定的了解了(大家有时间可以多研究一下这个类,对提高mvc水平还是很有帮助的),接下来进入今天的正题:扩展视图功能。通过上面讲解视图的工作原理大家可以看出,要想扩展视图的功能,一个非常好的切入点就是扩展视图基类。我们以多店版网上商城BrnMall为例,代码如下:
相关文章推荐
- BrnShop开源网上商城第三讲:插件的工作机制
- BrnShop开源网上商城第三讲:插件的工作机制
- BrnShop开源网上商城第二讲:ASP.NET MVC框架
- BrnShop开源网上商城第二讲:ASP.NET MVC框架
- BrnShop开源网上商城第三讲:插件的工作机制
- BrnShop开源网上商城第五讲:自定义视图引擎
- 开源Asp.Net MVC网上商城BrnShop正式发布,提供源码下载
- 开源Asp.Net MVC网上商城BrnShop
- BrnShop开源网上商城第四讲:自定义插件
- 开源Asp.Net MVC网上商城BrnShop正式发布,提供源码下载
- BrnShop开源网上商城第三讲:插件的工作机制
- 开源Asp.Net MVC网上商城BrnShop正式发布,提供源码下载
- BrnShop开源网上商城第四讲:自定义插件
- BrnShop开源网上商城第一讲:架构设计
- 重磅来袭,开源Asp.Net MVC网上商城BrnShop正式发布,提供源码下载(转)
- 使用session技术来实现网上商城购物车的功能
- BrnShop开源网上商城第三讲:插件的工作机制
- 几种开源的国外网上商城程序
- C#&JQ仿网上商城商品条件筛选功能
- C# ASP.NET 开源网上商城、外贸产品网上展示的几个效果图 -- 仅供大家参考