天天看点

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

我们知道在vm中可以直接使用Session、SiteRoot等,那么我们还可以使用哪些默认的系统变量呢?

其实可以直接在vm中使用的系统变量都是在NVelocityViewEngine类的CreateContext方法中定义的。下面我们就看看到底定义了哪些(详见代码中的注释说明):

 1

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

        private IContext CreateContext(IRailsEngineContext context, Controller controller)

 2

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

        {

 3

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            Hashtable innerContext = new Hashtable(StringComparer.InvariantCultureIgnoreCase);

 4

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            //对应的controller中的方法和属性可以直接在vm中使用  

 5

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            innerContext.Add(TemplateKeys.Controller, controller);

                //当前请求的上下文,请求,Session等可以直接使用

 6

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            innerContext.Add(TemplateKeys.Context, context);

 7

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            innerContext.Add(TemplateKeys.Request, context.Request);

 8

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            innerContext.Add(TemplateKeys.Response, context.Response);

 9

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            innerContext.Add(TemplateKeys.Session, context.Session);

10

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                //对应的controller中的Resources中所有资源可以直接在vm中使用

11

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            if (controller.Resources != null)

12

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            {

13

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                foreach(String key in controller.Resources.Keys)

14

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                {

15

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                    innerContext[key] = controller.Resources[key];

16

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                }

17

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            }

18

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

               //所有Params中的值可以直接在vm中使用

19

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            foreach(String key in context.Params.AllKeys)

20

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

21

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                if (key == null) continue; // Nasty bug?

22

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                object value = context.Params[key];

23

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                if (value == null) continue;

24

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                innerContext[key] = value;

25

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

26

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

27

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            // list from : http://msdn2.microsoft.com/en-us/library/hfa3fa08.aspx

28

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            object[] builtInHelpers =

29

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                new object[]

30

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                    {

31

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<Byte>(),

32

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<SByte>(),

33

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<Int16>(),

34

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<Int32>(),

35

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<Int64>(),

36

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<UInt16>(),

37

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<UInt32>(),

38

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<UInt64>(),

39

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<Single>(),

40

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<Double>(),

41

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<Boolean>(),

42

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<Char>(),

43

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<Decimal>(),

44

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<String>(),

45

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<Guid>(),

46

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                        new StaticAccessorHelper<DateTime>()

47

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                    };

48

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

               //常见的系统类可以之间使用,比如可以直接在vm中使用$Int32.MaxValue

49

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            foreach(object helper in builtInHelpers)

50

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

51

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                innerContext[helper.GetType().GetGenericArguments()[0].Name] = helper;

52

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

53

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

               //定义的Helper类可以直接在vm中使用

54

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            if (controller.Helpers != null)

55

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

56

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                foreach (object key in controller.Helpers.Keys)

57

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

58

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                    innerContext[key] = controller.Helpers[key];

59

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

60

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

61

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

62

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            // Adding flash as a collection and each individual item

63

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            //定义的Flash值可以直接使用

64

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            if (context.Flash != null)

65

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

66

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                innerContext[Flash.FlashKey] = context.Flash;

67

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

68

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                foreach(DictionaryEntry entry in context.Flash)

69

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

70

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                    if (entry.Value == null) continue;

71

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                    innerContext[entry.Key] = entry.Value;

72

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

73

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

74

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            //定义的PropertyBag值可以直接使用

75

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            if (controller.PropertyBag != null)

76

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

77

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

                foreach(DictionaryEntry entry in controller.PropertyBag)

78

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

79

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

80

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

81

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

82

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

83

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            //SiteRoot可以直接使用 ---取得的是应用程序的路径

84

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            innerContext[TemplateKeys.SiteRoot] = context.ApplicationPath;

85

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

86

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

            return new VelocityContext(innerContext);

87

MonoRail学习笔记十八:在VM中可以使用哪些系统变量

        }

   本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2007/11/07/952236.html,如需转载请自行联系原作者

继续阅读