File: DynamicEntity.cs

package info (click to toggle)
mono 6.12.0.199%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 1,296,836 kB
  • sloc: cs: 11,181,803; xml: 2,850,076; ansic: 699,709; cpp: 123,344; perl: 59,361; javascript: 30,841; asm: 21,853; makefile: 20,405; sh: 15,009; python: 4,839; pascal: 925; sql: 859; sed: 16; php: 1
file content (113 lines) | stat: -rw-r--r-- 3,672 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Drawing;
using System.Globalization;
using System.Web.DynamicData.Util;
using System.Web.Resources;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace System.Web.DynamicData {
    [ToolboxBitmap(typeof(DynamicEntity), "DynamicEntity.bmp")]
    public class DynamicEntity : Control {
        private HttpContextBase _context;

        [
        DefaultValue(DataBoundControlMode.ReadOnly),
        Category("Behavior"),
        ResourceDescription("DynamicEntity_Mode")
        ]
        public DataBoundControlMode Mode {
            get {
                var value = ViewState["Mode"];
                return value != null ? (DataBoundControlMode)value : DataBoundControlMode.ReadOnly;
            }
            set {
                ViewState["Mode"] = value;
            }
        }

        [
        DefaultValue(""),
        Category("Behavior"),
        ResourceDescription("DynamicControlFieldCommon_UIHint")
        ]
        public string UIHint {
            get {
                return (string)ViewState["UIHint"] ?? String.Empty;
            }
            set {
                ViewState["UIHint"] = value;
            }
        }

        [
        Category("Behavior"),
        DefaultValue(""),
        Themeable(false),
        ResourceDescription("DynamicControlFieldCommon_ValidationGroup")
        ]
        public string ValidationGroup {
            get {
                return (string)ViewState["ValidationGroup"] ?? String.Empty;
            }
            set {
                ViewState["ValidationGroup"] = value;
            }
        }

        private new HttpContextBase Context {
            get {
                return _context ?? new HttpContextWrapper(HttpContext.Current);
            }
        }

        public DynamicEntity() {
        }

        // for unit testing
        internal DynamicEntity(HttpContextBase context)
            : this() {
            _context = context;
        }

        [SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers", MessageId = "0#")]
        protected override void OnLoad(EventArgs e) {
            base.OnLoad(e);

            if (DesignMode) {
                return;
            }

            MetaTable table = MetaTableHelper.FindMetaTable(this, Context);
            if (table == null) {
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture,
                    DynamicDataResources.DynamicEntity_ControlNeedsToExistInAContextSupportingDynamicData,
                    this.ID));
            }

            EntityTemplateFactory entityTemplateFactory = table.Model.EntityTemplateFactory;
            EntityTemplateUserControl entityTemplateControl = entityTemplateFactory.CreateEntityTemplate(table, Mode, UIHint);
            if (entityTemplateControl == null) {
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture,
                    DynamicDataResources.DynamicEntity_CantFindTemplate,
                    table.Name,
                    entityTemplateFactory.TemplateFolderVirtualPath));
            }

            entityTemplateControl.Mode = Mode;
            entityTemplateControl.ValidationGroup = ValidationGroup;
            entityTemplateControl.Table = table;
            Controls.Add(entityTemplateControl);
        }

        protected override void Render(HtmlTextWriter writer) {
            if (DesignMode) {
                writer.Write("[" + GetType().Name + "]");
            }
            else {
                base.Render(writer);
            }
        }
    }
}