天天看點

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,如需轉載請自行聯系原作者

繼續閱讀