我们知道在vm中可以直接使用
Session、
SiteRoot等,那么我们还可以使用哪些默认的系统变量呢?
其实可以直接在vm中使用的系统变量都是在NVelocityViewEngine类的CreateContext方法中定义的。下面我们就看看到底定义了哪些(详见代码中的注释说明):
1privateIContextCreateContext(IRailsEngineContextcontext,Controllercontroller)
2{
3HashtableinnerContext=newHashtable(StringComparer.InvariantCultureIgnoreCase);
4//对应的controller中的方法和属性可以直接在vm中使用
5innerContext.Add(TemplateKeys.Controller,controller);
//当前请求的上下文,请求,Session等可以直接使用
6innerContext.Add(TemplateKeys.Context,context);
7innerContext.Add(TemplateKeys.Request,context.Request);
8innerContext.Add(TemplateKeys.Response,context.Response);
9innerContext.Add(TemplateKeys.Session,context.Session);
10
//对应的controller中的Resources中所有资源可以直接在vm中使用
11if(controller.Resources!=null)
12{
13foreach(Stringkeyincontroller.Resources.Keys)
14{
15innerContext[key]=controller.Resources[key];
16}
17}
18
//所有Params中的值可以直接在vm中使用
19foreach(Stringkeyincontext.Params.AllKeys)
20{
21if(key==null)continue;//Nastybug?
22objectvalue=context.Params[key];
23if(value==null)continue;
24innerContext[key]=value;
25}
26
27//listfrom:http://msdn2.microsoft.com/en-us/library/hfa3fa08.aspx
28object[]builtInHelpers=
29newobject[]
30{
31newStaticAccessorHelper<Byte>(),
32newStaticAccessorHelper<SByte>(),
33newStaticAccessorHelper<Int16>(),
34newStaticAccessorHelper<Int32>(),
35newStaticAccessorHelper<Int64>(),
36newStaticAccessorHelper<UInt16>(),
37newStaticAccessorHelper<UInt32>(),
38newStaticAccessorHelper<UInt64>(),
39newStaticAccessorHelper<Single>(),
40newStaticAccessorHelper<Double>(),
41newStaticAccessorHelper<Boolean>(),
42newStaticAccessorHelper<Char>(),
43newStaticAccessorHelper<Decimal>(),
44newStaticAccessorHelper<String>(),
45newStaticAccessorHelper<Guid>(),
46newStaticAccessorHelper<DateTime>()
47};
48
//常见的系统类可以之间使用,比如可以直接在vm中使用$Int32.MaxValue
49foreach(objecthelperinbuiltInHelpers)
50{
51innerContext[helper.GetType().GetGenericArguments()[0].Name]=helper;
52}
53
//定义的Helper类可以直接在vm中使用
54if(controller.Helpers!=null)
55{
56foreach(objectkeyincontroller.Helpers.Keys)
57{
58innerContext[key]=controller.Helpers[key];
59}
60}
61
62//Addingflashasacollectionandeachindividualitem
63//定义的Flash值可以直接使用
64if(context.Flash!=null)
65{
66innerContext[Flash.FlashKey]=context.Flash;
67
68foreach(DictionaryEntryentryincontext.Flash)
69{
70if(entry.Value==null)continue;
71innerContext[entry.Key]=entry.Value;
72}
73}
74//定义的PropertyBag值可以直接使用
75if(controller.PropertyBag!=null)
76{
77foreach(DictionaryEntryentryincontroller.PropertyBag)
78{
79if(entry.Value==null)continue;
80innerContext[entry.Key]=entry.Value;
81}
82}
83//SiteRoot可以直接使用 ---取得的是应用程序的路径
84innerContext[TemplateKeys.SiteRoot]=context.ApplicationPath;
85
86returnnewVelocityContext(innerContext);
87}
欢迎加入:http://www.itpob.cn/bbs
分享到:
相关推荐
:monorail: 单轨| 网络设计系统Monorail for React帮助开发人员执行。 这些组件由SimSpace的工程师和UX设计师的核心团队开发,可实现可靠的开发工作流程,以构建美观且功能强大的Web项目。快速开始将Monorail添加到...
MonoRail学习笔记一:一个小例子 随着微软放出消息,准备发布MVC的框架,各种议论纷至沓来。 以前用java、jsp对它的MVC结构、集中控制印象特别深刻,自从用了.NET后,虽然webform的控件很好用,总感觉有点怪怪的 ...
本资源包含“MonoRail基础学习文档”和“实例”,旨在帮助初学者快速入门并深入理解MonoRail的使用。 首先,让我们详细了解 MonoRail 的核心概念: 1. **Controller**:在MonoRail中,Controller是处理用户请求的...
在这个“入门篇”中,我们将深入探讨如何使用MonoRail构建一个简单的MVC应用程序。 首先,让我们理解MVC模式的基本概念: 1. Model:模型层是应用程序的核心,包含业务逻辑和数据。它处理数据的存储和检索,以及与...
在学习Castle Monorail时,你需要了解的主要知识点包括: 1. **MVC模式**:理解模型、视图和控制器之间的关系,以及它们如何协同工作以处理用户请求并呈现结果。 2. **依赖注入**:Castle Monorail支持依赖注入...
Monorail,中文名单轨列车,是针对.NET平台的一个早期...通过深入理解Monorail,开发者可以更好地理解现代Web框架的设计原则,这将有助于他们在使用其他类似框架(如ASP.NET MVC、ASP.NET Core MVC等)时更加得心应手。
在Monorail框架中,分页功能通常通过`PaginationHelper`类实现,而`CreateCustomPage`则是该类中的一个重要方法,用于创建自定义的分页逻辑。 #### 三、`PaginationHelper.CreateCustomPage`详解 `...
它们可用于使用任何长的、最好是高质量的序列(例如来自另一个基因组草图的 scaftigs/contigs)来构建和完成高质量的基因组草图组装。 它们都依赖于准确的长 DNA 序列来修补现有基因组组装草案中的空白。 Cobbler...
你可以通过查看和分析这些文件来深入了解如何在Monorail项目中实际使用和配置过滤器。 总的来说,Monorail的过滤器机制提供了强大的功能,可以帮助开发者在不侵入业务逻辑的情况下增强应用程序的功能和安全性。通过...
MonoRail、IBatisNet 和 Velocity 是三个在C#开发中常用的技术框架,它们分别用于不同的领域,但在实际项目中常被结合使用以构建高效、灵活的Web应用。下面将详细介绍这三个技术及其组合使用的要点。 **MonoRail** ...
《MonoRail:构建高效Web应用的框架探索》 MonoRail,这个名字在IT行业中或许并不如ASP.NET那样耳熟能详,但它却是.NET平台上的一个强大且灵活的Web应用程序框架。"ShoppingCart-MonoRail.rar"这个压缩包,包含了对...
在MonoRail中,模型类可以直接与数据库交互,或者通过ORM(对象关系映射)工具如NHibernate进行数据操作。 5. **依赖注入(Dependency Injection, DI)**: MonoRail支持DI,可以帮助开发者解耦代码,提高模块化。...
在压缩包中的"实体类生成器"文件,可能包含了生成器的源代码、配置文件、使用说明文档等,开发者可以对其进行定制或二次开发,以满足更具体的需求。了解并熟练使用这类工具,对于提升MonoRail项目的开发效率具有重要...
通过学习和实践这个"ibatisnet+monorail+vs2010"项目,开发者可以深入理解如何在.NET环境中集成和使用这些技术,提高Web开发技能。同时,这个实例也展示了如何在一个现代化的开发环境中实现灵活的数据访问和高效的...
Kirby + Vue.js入门套件主要特征 :motorway: 自动路由 :magnifying_glass_tilted_left: SEO友好:元标记 :globe_with_meridians: :wheelchair_symbol: 无障碍前端路由 :monorail: :dizzy: 页面数据 :high_voltage: ...
在 MonoRail 中实现文件上传功能,特别是整合FCKeditor(一款富文本编辑器),可以极大地提升用户在网页上的编辑体验。 一、MonoRail上传文件 在MonoRail中处理文件上传,首先需要了解HTTP协议中的多部分/表单数据...
Monorail,中文常被称为“单轨框架”,是.NET平台上的一款轻量级Web应用程序...在深入学习Monorail时,你还会发现它对测试驱动开发(TDD)友好,支持依赖注入(DI)以及插件架构,这些都是它成为开发者选择的重要因素。
本教程将引导你逐步了解MonoRail的基本概念和使用方法,包括filter、home、rescue、routing和layout这五个关键部分。 1. **MonoRail框架介绍** MonoRail是由Castle Project开发的,它借鉴了Ruby on Rails的设计...
本文将深入探讨Monorail项目中的GuestBook组件,包括其设计思路、技术实现以及在实际应用中的价值。 1. 设计理念与架构 Monorail项目遵循MVC(Model-View-Controller)设计模式,这是一种在Web开发中广泛采用的...