diff options
Diffstat (limited to 'src/System.Web.Mvc/ViewTypeControlBuilder.cs')
-rw-r--r-- | src/System.Web.Mvc/ViewTypeControlBuilder.cs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/System.Web.Mvc/ViewTypeControlBuilder.cs b/src/System.Web.Mvc/ViewTypeControlBuilder.cs new file mode 100644 index 00000000..01a0a2aa --- /dev/null +++ b/src/System.Web.Mvc/ViewTypeControlBuilder.cs @@ -0,0 +1,29 @@ +using System.CodeDom; +using System.Collections; +using System.Web.UI; + +namespace System.Web.Mvc +{ + internal sealed class ViewTypeControlBuilder : ControlBuilder + { + private string _typeName; + + public override void Init(TemplateParser parser, ControlBuilder parentBuilder, Type type, string tagName, string id, IDictionary attribs) + { + base.Init(parser, parentBuilder, type, tagName, id, attribs); + + _typeName = (string)attribs["typename"]; + } + + public override void ProcessGeneratedCode( + CodeCompileUnit codeCompileUnit, + CodeTypeDeclaration baseType, + CodeTypeDeclaration derivedType, + CodeMemberMethod buildMethod, + CodeMemberMethod dataBindingMethod) + { + // Override the view's base type with the explicit base type + derivedType.BaseTypes[0] = new CodeTypeReference(_typeName); + } + } +} |